我的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_selectorfunc1的方式使用了错误的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));

10-02 10:15