C ++中同一对象的实例(游戏编程)

时间:2015-01-31 16:23:24

标签: c++ oop

我想知道如何在C ++中创建同一对象的多个实例。我有一个例子。假设我正在创建一个简单的动作游戏,我有一个名为“Bullet”的对象。如果我点击f.e.一个CTRL键,它会导致枪声。所以我创建了一个Bullet实例。当子弹击中某物或离开窗户时,实例就会死亡。但是,如果我有f.e.像机枪一样的东西。它可以连续发射许多子弹。所以我必须创建Bullet的许多实例,但我该怎么做呢?我应该在开始时制作像这样的指针

Bullet *pointer;

然后,当我想创建一个子弹的实例时,我在内存中为一个“子弹”分配一个空间。当我想创建下一个项目符号时,我会分配更多空间等等。但是当子弹“死亡”时,我在记忆中得到了死亡空间......

所以我不知道如何处理这种情况。我是OOP的新手。我已用C语言编程,现在我想通过游戏编程学习C ++(非常有趣):-)。谢谢你的答案!

1 个答案:

答案 0 :(得分:2)

只需使用std::vector<Bullet> bullets即可存储您的所有项目符号。无论如何,您将需要所有这些对象,std::vector将:

  • 分摊追加新物品
  • 如果向量变得太大,
  • 允许你shrink_to_fit
  • 允许您在开头reserve一定数量的元素,有效地创建一个空的对象池
  • 保持所有对象连续,使一切都非常有效

您可能还想尝试std::unordered_map,它几​​乎可以插入和移除时间。