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)
有什么建议?
你混淆了指针和非指针变量。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()