gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:24 25 4
gpt4 key购买 nike

简介

我正在用 C++ 创建一个小游戏,我想创建一个函数来重新启动游戏。

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

我的目标

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

我的代码:

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 是一个指针,您必须更新您编写的任何其他使用播放器的代码,才能使用 -> member access operator .例如,player.name() 将变为 player->name()

关于c++ - 重新启动游戏并重新实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com