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

Dat*_*las 4 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

mea*_*gar 5

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

Player* player = new Player();
Run Code Online (Sandbox Code Playgroud)

您还需要记住释放先前使用匹配分配的内存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();
}
Run Code Online (Sandbox Code Playgroud)

现在这player是一个指针,您必须更新您编写的任何其他使用 player 的代码,以使用-> 成员访问 operator。例如,player.name()将成为player->name()