【发布时间】:2016-02-08 16:36:46
【问题描述】:
我正在尝试将成员函数与std::function 回调挂钩。回调类型为:
std::function<void(Touch*, Event*)>
我的成员函数是:
void Game::onTouchEnded(Touch* touch, Event* event)
当我尝试使用以下方法分配回调时:
listener->onTouchEnded = bind(&Game::onTouchEnded, this);
我收到多个候选人的No viable overloaded '=' 错误。以下是我认为最相关的一项的详细信息:
Candidate function not viable: no known conversion from
'__bind<void (Game::*)(cocos2d::Touch *, cocos2d::Event *), Game *>'
to
'std::__1::function<void (cocos2d::Touch *, cocos2d::Event *)>'
for 1st argument`
我尝试了几种不同的 bind() 安排,但我不确定错误告诉我什么。就参数和返回值而言,这些类型似乎都是正确的,所以我不确定它为什么不接受它?
【问题讨论】:
-
尝试添加两个
std::placeholders。 -
你需要传递第二个参数
-
@LogicStuff @sunny1304 不过,我没有其他要绑定的了。这些参数将在回调中传递给 me。我只是将函数绑定到
this,以便我可以使用成员函数作为回调。
标签: c++ c++11 callback cocos2d-x