【发布时间】:2019-05-27 15:41:27
【问题描述】:
我必须创建一个游戏。我有一个抽象的 Player 类。我有一个 GameEngine 类,它有一个指向 Player 的动态指针数组。每当添加一个玩家时,我都会对其进行分类并在 GameEngine 的“addPlayer()”方法中创建一个 Mage 或 Hero 对象(都是 Player 的子对象)。但是,在方法完成后,指针被破坏,如果我尝试访问 player 数组中的该项目,它会因“分段错误”而崩溃。我知道为什么会这样,但我不知道如何解决。我什至不确定这是否是完成这项工作的正确方法。你能给我建议吗?谢谢:)
编辑
这是一些示例代码:
class GameEngine {
...
Player** players;
...
void addPlayer() {
Hero h("Frodo");
players[playerCount] = &h;
playerCount++;
}
}
class Player { ... }
class Hero : public Player { ... }
【问题讨论】:
-
如果您需要代码方面的帮助,您需要显示代码。请阅读minimal reproducible example
-
对于超出其范围的对象,您可以通过
std::shared_ptr管理它们并将它们存储在容器中以供以后访问。