简介
我正在用C ++创建一个小游戏,并希望创建一个重启游戏的功能。
首先我要创建对象player
。然后我有一个if语句来确定何时按下某个键来调用New()
方法。
我的目标
在该方法中,我想重新实现Player类的一个对象,因此所有变量都将被重置。
我的代码:
Player player;
//New game method
Game::New()
{
player = new Player();
}
//Game loop
Game::Loop()
{
if(keyispressed(key))
{
Game.New();
}
}
有什么建议吗?
答案 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()