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

Était-ce utile?

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));

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top