c++ - 自动将一个对象添加到该对象父对象的 vector 中

标签 c++ oop inheritance

我正在用 C++ 设计一个游戏引擎。我目前正在对游戏中的不同实体进行分类。我的基类是 SpriteObject,它继承自两个类 MovableObject 和 FixedObject。现在,如果我创建一个 MovableObject 的实例并想将它添加到 Sprite 的 Vector 和 MovableObject 的 Vector 中,我只是这样做:

Vector<Sprite*> sprites;
Vector<MovableObject*> movableObjects;
MovableObject* movingObject = new MovableObject();
sprites.push_back(movingObject);
movableObjects.push_back(movingObject);

但是随着不同类别和实体的增长,代码会变得越来越大(而且将每个实体添加到它所属的每个 vector 中会变得很烦人)。如何在创建对象时自动将对象添加到它所属的 vector 中?

编辑 1:我想我只是想出了一个解决方案,如果我只是创建一个全局静态类实体来保存场景中所有实体的 vector 会怎么样。每个实体都可以访问此类,当创建实体时,它只是将自身的指针版本添加到该全局类中的相应 vector 。

编辑 2:但我忘记了我的解决方案仍然需要我手动将每个实体添加到其匹配 vector 中。我只是将工作分配给不同的实体。

最佳答案

这是一个很好的问题。

我想我会这样实现:在Sprite类中会有一个addToVector()方法,每个派生类都会重写它把自己添加到相应的 vector 。

关于c++ - 自动将一个对象添加到该对象父对象的 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793223/

相关文章:

css - 两个连续调用的样式表中的第二个能否覆盖第一个中定义的所有样式?

java - 如何随时设置 java.util.Properties 的默认值?

c++ - 最快的 C++ 容器 : Unique Values

c++ - Windows 对话框主菜单的自定义位置

c - 那么,如何将程序模块化并实现信息隐藏呢?

Perl:将 Coderef 分配给方法而不使用符号表 Hack

Java : If A extends B and B extends Object, 是多重继承

c++ - 标准概念列表?

c++ - 有没有一种直观的方法来检查标志和状态?

c# - 构造函数 block 是可以接受的样式吗?