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

Можно ли передать в функцию указатель на перегруженный оператор? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как остановить программу? http://www.cyberforum.ru/cpp-beginners/thread1103882.html
Здравствуйте. Сабж. #include "stdafx.h" #include "vector" #include "conio.h" using namespace std; void main()
C++ Как реализовать AES на С++ У кого-нибудь есть рабочий код с функциями шифровки/дешифровки. А то нигде не могу найти... http://www.cyberforum.ru/cpp-beginners/thread1103881.html
C++ Круг, окружность в С++
Делаю в задачу в Visual Studio и тут не работает graphics.h. Не подскажите как можно создать окружность или круг? Нужно писать большую функцию с закрашиванием пикселей или есть готовая функция...
C++ Выделить память перед strcat
перед выполнением функции strcat() необходимо убедиться, что для переменной выделена память ну или выделено ли достаточно памяти, подскажите как это сделать
C++ Вывод столбцами http://www.cyberforum.ru/cpp-beginners/thread1103874.html
Все просто, но не соображу)) Вывожу данные через std::stringstream. Строка через табуляцию выводиться так. То есть, если строка не влазеет в поле табуляции, она переноситься как вторая табуляция....
C++ Как написать функцию суммирования двумерного массива, задаваемого с клавиатуры? Требуется ввести с клавиатуры массив, к примеру, 2Х3 и посчитать его сумму с помощью функции. Не могу понять, как правильно написать эту функцию, чтобы расчет был верный. #include <stdio.h> int... подробнее

Показать сообщение отдельно
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
24.02.2014, 04:27
собсно тут два пути
1) использовать старые недобрые функции (c++98), генерящии врапперы вокруг member function
&F::operator - pointer to member
std::mem_fun(&F::operator()), &f) - генерирует функтор, принимающий два аргумента - F* (указатель объекта, у которого вызывается member function) и int - непосредственно аргумента F::operator()(int)
дальше биндим первый аргумент (F*) на поинтер объекта - std::bind1st(std::mem_fun(&F::operator()), &f)
к сожалению получившийся функтор имеет тип, непригодный для определения функции (он унаследован от std::unary_function, но в unary_function однако не определен operator()(Arg)) - поэтому для простоты можно позволить компилятору вывести тип из шаблона.
Второй вариант (более адекватный) - использовать bind/function из c++11 / boost
В с++11 можно при желании сконтруировать функтор не через bind, а заданием лямбды (3ий вариант)

C++
1
2
3
4
5
6
7
8
9
int fun2(std::function<int (int)> f) { 
    return f(34);                      
}                                      
                                       
int main()                                                                          
{                                                                                   
    F f;                                                                                  
    std::cout << fun2([&f](int arg){ return f(arg); }) << std::endl;                
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru