我的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);
现在这给了我一个错误?我做错了什么?
亲切的问候
答案 0 :(得分:1)
在不知道错误是什么的情况下,根据您实例化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));