介绍
我正在用 C++ 创建一个小游戏,并想创建一个重新启动游戏的函数。
首先我创建对象player
。然后我有一个 if 语句来确定何时按下某个键来调用New()
方法。
My goal
在该方法中,我想重新实例化 Player 类的对象,因此所有变量都将被重置。
My code:
Player player;
//New game method
Game::New()
{
player = new Player();
}
//Game loop
Game::Loop()
{
if(keyispressed(key))
{
Game.New();
}
}
有什么建议么?
您混淆了指针变量和非指针变量。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
是一个指针,您必须更新您编写的使用播放器的任何其他代码,才能使用->
成员访问操作符。例如,player.name()
会变成player->name()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)