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 方法返回 aconst CCString*但您将其分配给 aCCString*这意味着它不再是const

你有三个选项来解决这个问题,从最简单的开始:

  • 声明你的 CCString const(除了不能将另一个 CCString 分配给同一个对象之外,没有其他缺点):

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

  • 显式转换 const (根据编译器设置可能不允许这样做):

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

  • 从编译器设置中删除permissive标志以忽略此错误。不推荐,因为它允许您违反 const-ness。
于 2013-03-16T11:51:51.687 回答