Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
trympyrym
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
#1

Как передать "operator<" в функцию? - C++

24.11.2013, 03:54. Просмотров 492. Ответов 5
Метки нет (Все метки)

Есть шаблонная функция, которая принимает компаратор. Как передать в качестве этого компаратора operator< ?

Тестовый пример: обернутый "operator<" работает, а необернутый - не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
struct comparator
{
    bool operator()(int a, int b)
    {
        return a < b;
    }
};
 
template <class Compare>
void function(Compare &comp)
{
    cout << comp(1, 2) << endl;
    cout << comp(2, 1) << endl;
}
Если после этого пишу:

C++
1
2
3
4
5
int main() {
    comparator QWE;
    function(QWE);
    return 0;
}
то все работает, а если пишу:

C++
1
2
3
4
int main() {
    function(operator<);
    return 0;
}
то не работает(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2013, 03:54     Как передать "operator<" в функцию?
Посмотрите здесь:

Как передать объект "Стек" в функцию? - C++
Интересует такой вопрос, а как передать класс стека в параметр процедуры или функции? например программа, и хочу сделать чтобы она была...

Перегрузить операторы operator+() и operator*() в пользовательском классе "Комплексное число" - C++
Здравствуйте. Предлагаю заняться арифметикой. Создал прослейший класс, перегрузил операторы сложения и умножения, в конструкторе...

Чем "operator *=" отличается от "operator *"? - C++
снова застряла, не могу понять, чем этот оператор должен отличаться от оператора*.....? вот он, но это работает только в случае...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

More C++ Idioms/Execute-Around Pointer как в этом случае работает "operator->()" - C++
Читаю сейчас More C++ Idioms Дошел до Execute-Around Pointer и впал в ступор. Есть код // ideone.com/R728xo #include &lt;iostream&gt; ...

Как переопределить "operator <<" для cout? - C++
использую RAD 2010 (MVS 2010 стал сильно тормозить и я перешёл). setlocale не помогает, функция char bufRus; char* Rus(const char*...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
458 / 307 / 24
Регистрация: 22.03.2011
Сообщений: 1,003
Завершенные тесты: 2
24.11.2013, 04:04     Как передать "operator<" в функцию? #2
Во первых
C++
1
2
3
4
5
int main() {
    comparator QWE;     //<------------ Это обьект!
    function(QWE);        //<---------- передача обьекта с перегруженым методом ()
    return 0;
}
Во вторых
C++
1
2
3
4
int main() {
    function(operator<);        //<---------- Что это? (укажите тип)
    return 0;
}
trympyrym
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
24.11.2013, 05:36  [ТС]     Как передать "operator<" в функцию? #3
Цитата Сообщение от stima Посмотреть сообщение
Что это? (укажите тип)
Это я хочу передать в функцию необернутый оператор сравнения. Но я не знаю, как это сделать.
stima
458 / 307 / 24
Регистрация: 22.03.2011
Сообщений: 1,003
Завершенные тесты: 2
24.11.2013, 06:00     Как передать "operator<" в функцию? #4
Вам стоит подучить основы. Вы что-то путаете. С++ не оперирует "операторами как обьектами", но возможно передать указатель на функцию.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
bool my_compare(int lhs, int rhs)
{
    return rhs > lhs;
}
 
bool foo(bool(*compare)(int,int), int a, int b)
{
    return compare(a, b);
}
 
int main()
{
    std::cout << foo(&my_compare, 1, 2) << std::endl;
 
    return 0;
}
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
24.11.2013, 08:24     Как передать "operator<" в функцию? #5
http://www.cplusplus.com/reference/functional/less/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 16:59     Как передать "operator<" в функцию?
Еще ссылки по теме:

Как сделать "operator ==" внешним? - C++
Здравствуйте! Так я определяю оператор равенства внутри класса chislo. Как мне отделить его от класса? Т.е. как мне записать его вне...

Expected init-declarator before "operator".expected `,' or `;' before "operator" - C++
Пример не мой. Пытаюсь у себя запустить и чтото неполучается. Ошибка на строке 24 Expected init-declarator before &quot;operator&quot;.Expected...

Как работает operator "->" - C++
Объясните пожалуйста,как работает такой вот значок -&gt; .А то гугл не хочет по нему искать(

Как заменить функцию printf из "С" в "С++"? - C++
Я знаю, что саму функцию printf можно заменить функцией cout, но меня интересует как заменить то, что в скобках? printf(&quot;%4d&quot;,a); ...

Написать функцию выбора пунктов меню стрелками "вверх" "вниз" - C++
Доброго всем времени суток.Пожалуйста подскажите как мне справиться с моей проблемой.Нужно написать функцию выбора пунктов меню стрелками...

Вывод строки с cout: IntelliSense: no operator "<<" matches these operands - C++
ошибку выдает 3 IntelliSense: no operator &quot;&lt;&lt;&quot; matches these operands operand types are: std::ostream &lt;&lt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
trympyrym
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
24.11.2013, 16:59  [ТС]     Как передать "operator<" в функцию? #6
То, что надо. Спасибо.
Yandex
Объявления
24.11.2013, 16:59     Как передать "operator<" в функцию?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru