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

Instances of the same object in C++ (game programming)

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

Bullet *pointer;

然后,当我想创建一个子弹实例时,我在内存中为一个 "bullet" 分配了一个 space。当我想创建下一个项目符号时,我会分配更多 space 等等。但是当一颗子弹"dies"我在记忆中得到了一个死space...

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

只需使用 std::vector<Bullet> bullets 来储存你所有的子弹。无论如何,您将需要所有这些对象,std::vector 将:

  • 摊销追加新对象
  • 允许您shrink_to_fit如果矢量在任何时候变得太大
  • 允许您在开始时reserve一定数量的元素,有效地创建一个空的对象池
  • 保持所有对象连续,使一切都非常高效

您可能还想尝试 std::unordered_map,它的插入和删除时间几乎恒定。