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

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

}

4

1 に答える 1

0

コンパイラは、CCString の「const-ness」が失われていると文句を言います。objectForKey メソッドは a を返しますが、const CCString*それを a に割り当てているため、CCString*もはや ではありませんconst

これを修正するには、最も簡単なものから始めて、3 つのオプションがあります。

  • CCString の const を宣言します (同じオブジェクトに別の CCString を割り当てることができないこと以外にこれの欠点はありません)。

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

  • const を明示的にキャストします (これは、コンパイラの設定によっては許可されない場合があります)。

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

  • permissiveこのエラーを無視するには、コンパイラ設定からフラグを削除してください。const ネスに違反できるため、お勧めしません。
于 2013-03-16T11:51:51.687 に答える