2012-08-24 2 views
2

Я новичок в C++ и cocos2d-x, и у меня есть проблема. У меня есть «снаряд» это CCSprite, хорошо, я вставить его в массиве:Cocos2d-x CCArray - Объекты и спрайты

projectile->setTag(2); 

_projectiles->addObject(projectile); 

Но когда мне это нужно:

CCSprite* proj; 
CCARRAY_FOREACH(_projectiles,proj){ 
    CCSprite *projectile = proj; 
    ... 

У меня есть ошибка о «_projectiles» имеет CCObject внутри , Извините за мой плохой английский и просит помощи!

ответ

5

Вы должны бросить proj, который хранится в CCArray в CCObject* к CCSprite*:

CCSprite *projectile = static_cast<CCSprite*>(proj); 

Вы можете также вы dynamic_cast в случае, если вам нужно проверить во время выполнения, что proj фактически CCSprite:

CCSprite *projectile = dynamic_cast<CCSprite*>(proj); //will return nullptr if failes to cast 
+0

обычно я просто использую C cast, который является (CCSprite *) proj, у него меньше букв для ввода: P. может быть, я слишком ленив. –

+0

@ m.ding: вы не должны использовать c-style cast, когда сможете использовать C++-броски, так как они дают вам много чеков и, таким образом, помогают вам не стрелять в ногу. – Andrew

+0

@Andrew: Спасибо, я запомню что и использовать C++ приведения в моих следующих проектах –

Смежные вопросы