研究cocos2dx 3.0 时,使用CallFuncN创建一个调用用户自定义的函数的动作,需要传递一个std::function<void(Node*)>&类型的参数,于是我定义了一个成员函数:
void MyClass::removeNode(Node* node)
{
if(node)
this->removeChild(node);
}
将其传递给CallFunc:
std::function<void(Node*)> fTest = &MyClass::removeNode;
auto removeActions = CallFuncN::create(fTest);
VS2013报了错误:
error C2664: “void std::_Func_class<_Ret,MyClass &>::_Set(std::_Func_base<_Ret,MyClass &> *)”: 无法将参数 1 从“_Myimpl *”转换为“std::_Func_base<_Ret,MyClass &> *”
一开始以为是我使用错误,在检查了半天以及查阅半天之后,终于发现...原来早在VS2012就有这个bug,并且VS2013也没有修复,坑啊
微软关于此bug的链接:http://connect.microsoft.com/VisualStudio/feedback/details/694400