重新启动游戏并重新实例化对象

时间:2011-04-05 13:41:56

标签: c++ class object instance reset

简介

我正在用C ++创建一个小游戏,并希望创建一个重启游戏的功能。

首先我要创建对象player。然后我有一个if语句来确定何时按下某个键来调用New()方法。

我的目标

在该方法中,我想重新实现Player类的一个对象,因此所有变量都将被重置。

我的代码:

Player player;

//New game method
Game::New()
{
    player = new Player();
}

//Game loop
Game::Loop()
{
    if(keyispressed(key))
    {
        Game.New();
    }
}

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

你混淆了指针和非指针变量。 new Player()返回动态分配的Player对象的地址。您不能将此地址分配给非指针变量player;你需要将player声明为指针:

Player* player = new Player();

您还需要记住释放先前使用匹配的delete

分配的内存
// player starts out pointing to nothing
Player* player = 0;

//New game method
Game::New()
{
    // If player already points to something, release that memory
    if (player)
        delete player;

    player = new Player();
}

既然player是指针,您必须更新您编写的使用播放器的任何其他代码,以使用-> member access operator。例如,player.name()将变为player->name()