Coos2dx中的类型转换错误

时间:2013-03-15 09:11:01

标签: cocos2d-x

我尝试将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);

}

1 个答案:

答案 0 :(得分:0)

编译器抱怨丢失了CCString的“const-ness”。 objectForKey方法返回const CCString*,但您将其分配给CCString*,这意味着它不再是const

有三个选项可以解决这个问题,从最简单的方法开始:

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

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

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

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

  • 从编译器设置中删除permissive标志以忽略此错误。不推荐,因为它允许你违反常量。