我的cocos2d-X应用程序中有以下未编译的代码
SEL_CallFuncO func1 =callfunc_selector(BPBasketLayer::addSingleNumberBasket);
SEL_CallFuncO func2 =callfunc_selector(BPBasketLayer::addSpawnPowerUp);
CCArray *arr=CCArray::create();
arr->addObject(func1);
arr->addObject(func2);
现在这给我一个错误吗?我究竟做错了什么 ?
亲切的问候
最佳答案
不知道错误是什么,似乎基于实例化callfunc_selector
和func1
的方式使用了错误的func2
。我认为您要使用callfuncO_selector
,因为它需要CCObject*
。
来自CCObject.h
:typedef void (CCObject::*SEL_CallFuncO)(CCObject*);
#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)
编辑:
您将需要遵循Vikas在注释中的建议,并使用std::vector
来容纳函数指针,因为CCArray
仅用于CCObject
派生类。所以像这样:std::vector <SEL_CallFuncO> func_ptr_array;
func_ptr_array.push_back(callfuncO_selector(BPBasketLayer::addSingleNumberBasket));
func_ptr_array.push_back(callfuncO_selector(BPBasketLayer::addSpawnPowerUp));