Search code examples
c++objective-ccocos2d-xtranslate

Class in Cocos2dx


The following the few lines of source code(cocos2d)

BodyNode *dataA = (BodyNode*) bodyA->GetUserData(); 
BodyNode *dataB = (BodyNode*) bodyB->GetUserData();

Class p1 = [Tuna class];
Class p2 = [Oilbarrel class];
Class p3 = [Barrelhorizontal class];


if( [dataA isKindOfClass:p1] ||[dataB isKindOfClass:p1] 
   || [dataA isKindOfClass:p2] ||[dataB isKindOfClass:p2]
   || [dataA isKindOfClass:p3] ||[dataB isKindOfClass:p3]
   ) 
{

        state1 = tBomb1Hit;
}

Can you please assist me to change the above coding in cocos2dx?


Solution

  • You need to use dynamic_cast

        if( dynamic_cast<Tuna*>(dataA) || dynamic_cast<Tuna*>(dataB)
         ||dynamic_cast< Oilbarrel*>(dataA) || dynamic_cast< Oilbarrel*>(dataB)
         ||dynamic_cast< Barrelhorizontal*>(dataA) || dynamic_cast< Barrelhorizontal*>(dataB) ){
            state1 = tBomb1Hit;
    
    }
    

    dynamic_cast< Tuna* >(dataA) - if dataA isn't a Tuna instance then dynamic_cast return NULL