2013-03-15 2 views
0

http://www.raywenderlich.com/29460/collisions-and-collectables-how-to-make-a-tile-based-game-with-cocos2d-2-x-part-2 자습서를 cocos2dx로 변환하고이 줄에 오류가 발생합니다. CCString * collision = properties-> objectForKey ("Collidable");Coos2dx의 유형 변환 오류

void HelloWorld::setPlayerPosition(CCPoint position) 
{ 
CCPoint tileCoord = this->tileCoordForPosition(position); 
int tileGid = _meta->tileGIDAt(tileCoord); 
if(tileGid) 
{ 
    CCDictionary *properties = _tileMap->propertiesForGID(tileGid); 
    if(properties) 
    { 
     CCString *collision = properties->objectForKey("Collidable"); 
     if(collision && (collision->compare("True"))) 
      return; 
    } 
} 
_player->setPosition(position); 

}

+0

"...하지만 그 오류가 무엇이겠습니까?"그는 머리에 궁금해했습니다. 오류 메시지를 추가하는 데 도움이 될 것입니다. – LearnCocos2D

+0

오류가 발생했습니다 ... 'const cocos2d :: CCString *'에서 'cocos2d :: CCString *'으로 잘못 변환되었습니다 [-fpermissive] – Singhak

답변

0

컴파일러는 CCString의 "CONST - 다움"의 손실에 대해 불평. objectForKey 메서드는 const CCString*을 반환하지만 CCString*에 할당하면 더 이상 const이 아닙니다.

당신은 가장 쉬운 시작으로이 문제를 해결하는 세 가지 옵션이 있습니다 :

  • 당신의 CCString의 CONST (같은 객체를 다른 CCString을 할당 할 수없는 이상이 다른 어떤 단점) 선언 :

const CCString *collision = properties->objectForKey("Collidable");

  • 명시 적으로 캐스팅 const를 멀리 (이 컴파일러 설정에 따라 허용되지 않을 수 있습니다) :

CCString *collision = (CCString*)properties->objectForKey("Collidable");

  • 16,이 오류를 무시하는 컴파일러 설정에서 permissive 플래그를 제거합니다. 당신이 const-ness를 위반할 수 있기 때문에 추천하지 않는다.