error C2664: “void std::_Pmf_wrap

使用vs2013編寫cocos2dx的代碼:

          _touchListener = EventListenerTouchOneByOne::create();
_touchListener->setSwallowTouches(true);


_touchListener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);
_touchListener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);
_touchListener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded, this);
_touchListener->onTouchCancelled = CC_CALLBACK_2(HelloWorld::onTouchCancelled, this);

結果編譯時報如下錯誤

error C2664: “void std::_Pmf_wrap<void (__thiscall cocos2d::Layer::* )(const std::vector<cocos2d::Touch *,std::allocator<_Ty>> &,cocos2d::Event *),void,cocos2d::Layer,const std::vector<_Ty,std::allocator<_Ty>> &,cocos2d::Event *>::operator ()(_Farg0 &,const std::vector<_Ty,std::allocator<_Ty>> &,cocos2d::Event *) const”: 無法將參數 2 從“cocos2d::Touch *”轉換爲“const std::vector<cocos2d::Touch *,std::allocator<_Ty>> &” d:\program files (x86)\microsoft visual studio 12.0\vc\include\functional 1149 1 GameCenter

從錯誤的意思看是說不能將cocos2d::Touch *轉換爲const std::vector<cocos2d::Touch *,std::allocator<_Ty>> &

最終發現是因爲寫錯了函數,_touchListener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchesMoved, this);

這裏將HelloWorld::onTouchMoved錯寫成了HelloWorld::onTouchesMoved,導致函數不匹配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章