我在我的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 基于实例化的方式 func1func2.我想你想用 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));

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top