Ajout de SEL_CallFuncO à un CCArray
Question
J'ai le code suivant dans mon application cocos2d-X qui ne compile pas
SEL_CallFuncO func1 =callfunc_selector(BPBasketLayer::addSingleNumberBasket);
SEL_CallFuncO func2 =callfunc_selector(BPBasketLayer::addSpawnPowerUp);
CCArray *arr=CCArray::create();
arr->addObject(func1);
arr->addObject(func2);
Maintenant, cela me donne une erreur ?Qu'est-ce que je fais mal ?
Cordialement
La solution
Sans savoir quelle est l'erreur, il semble que vous utilisiez le mauvais callfunc_selector
en fonction de la façon dont vous instanciez func1
et func2
.Je pense que tu veux utiliser callfuncO_selector
puisqu'il faut un CCObject*
.
Depuis CCObject.h
:
typedef void (CCObject::*SEL_CallFuncO)(CCObject*);
#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)
Modifier:
Vous devrez suivre ce que Vikas a suggéré dans les commentaires et utiliser un std::vector
pour héberger les pointeurs de fonction depuis CCArray
est pour CCObject
classes dérivées uniquement.Donc quelque chose comme ça :
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));