103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
1

Функторы

14.01.2016, 21:59. Показов 1547. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять в чем ошибка. Когда func вызывается в main все в порядке, а когда из функции test, то выдает ошибку "результатом вычисления фрагмента не является функция, принимающая 2 аргумента".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <functional>
template <typename T>
void test(T lhs, T rhs, std::binary_function<T,T,bool>& func)
{
    func(lhs,rhs);
}
 
int main()
{
    int a = 10, b = 5;
    auto func = std::less<int>();
    func(a,b);
    test(a,b,func);
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2016, 21:59
Ответы с готовыми решениями:

функторы
#include &lt;iostream&gt; class foo{ void operator ()(void){std::cout &lt;&lt; &quot;hi&quot;;} };

STL, функторы
Всем привет! Вообщем есть код: #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; int...

STL функторы, предикаты
У нас есть: std::multimap&lt;std::string,std::string&gt; map; нужно удалить все повторяющиеся...

Стандартные функторы-адаптеры
Добрый вечер! Хочу отсортировать контейнер, заполненный указателями на объекты класса Class,...

3
Неэпический
17848 / 10616 / 2049
Регистрация: 27.09.2012
Сообщений: 26,686
Записей в блоге: 1
14.01.2016, 22:02 2
ivan37, Сам std::binary_function никаким функтором не является.
Можете считать, что std::binary_function, это некий флажок у типа,
что он является функтором с двумя аргументами и предоставляет необходимый псевдонимы.

P.S. В C++11 оно уже deprecated.
0
103 / 82 / 78
Регистрация: 11.05.2015
Сообщений: 201
14.01.2016, 22:17  [ТС] 3
Croessmah, Что мне нужно сделать, чтобы в функцию в качестве аргументов можно было передавать объекты типа std::less<T> и std::greater<T>?
0
Неэпический
17848 / 10616 / 2049
Регистрация: 27.09.2012
Сообщений: 26,686
Записей в блоге: 1
14.01.2016, 22:21 4
Лучший ответ Сообщение было отмечено ivan37 как решение

Решение

C++
1
2
3
4
5
template <typename T, typename Func>
void test(T lhs, T rhs, Func func)
{
    func(lhs,rhs);
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2016, 22:21
Помогаю со студенческими работами здесь

Функторы, алгоритмы и адаптеры
Нужна помощь! 1 Нужно создать multimap и multiset на основе элементов типа класса CPerson,...

Функторы и алгоритмы stl
Добрый день! Интересует такой вопрос. Я хочу, используя стандартный алгоритм стл for_each() и...

Шаблоны и функторы как callback для класса свойства объекта. Код работает - но не должен
Здравствуйте! Хочу написать реализацию класса свойства на шаблоне. Т.е есть объект, он инициирует...

функторы && STL
Знакомлюсь с функторами. Помогите реализовать поиск минимального числа в последовательности,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru