Как инкапсулировать привязку функции? - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть:

std::function<void(EventCustom*)> f = std::bind( &MyClass::MyFunc, myObj, _1 );

Приведенная выше строка используется во всем моем коде, но вместо MyClass могут использоваться MyClass2, MyClass3, myObj3, myObj2 и т. Д. Вместо MyClass и myObj

Есть ли способ обернуть вышеупомянутое в функцию?Проблема, с которой я сталкиваюсь, заключается в том, что если я не использую код точно так, как написано выше, вывод bind не создает точно функцию std ::, поэтому компилятор жалуется.

EventCustom * - это объект, используемый в библиотеке cocos2d-x.Так что, если вы скачаете и соберете проект cocos2d-x, вы сможете его использовать.

1 Ответ

1 голос
/ 20 апреля 2019

А как же лямбда?

std::function<void(EventCustom*)> f = [&myObj2](EventCustom* pEvent) {
    myObj2.MyFunc(pEvent);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...