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

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

Восстановить пароль Регистрация
 
trympyrym
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
24.11.2013, 03:54     Как передать "operator<" в функцию? #1
Есть шаблонная функция, которая принимает компаратор. Как передать в качестве этого компаратора 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;
}
то не работает(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
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
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.11.2013, 08:24     Как передать "operator<" в функцию? #5
http://www.cplusplus.com/reference/functional/less/
trympyrym
0 / 0 / 0
Регистрация: 13.08.2013
Сообщений: 17
24.11.2013, 16:59  [ТС]     Как передать "operator<" в функцию? #6
То, что надо. Спасибо.
Yandex
Объявления
24.11.2013, 16:59     Как передать "operator<" в функцию?
Ответ Создать тему
Опции темы

Текущее время: 18:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru