题
我在我的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));
不隶属于 StackOverflow