我試圖掛鉤一個成員函數,最大回調爲std::function
。回調的類型是:沒有可行的重載'='用於將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
@LogicStuff @ sunny1304雖然我沒有別的東西可以綁定。這些參數將在回調中傳遞給* me *。我只是將函數綁定到'this',以便我可以使用成員函數作爲回調函數。 – aardvarkk