我正在用C ++设计游戏引擎。我目前正在对游戏中的不同实体进行分类。我的基类是SpriteObject,两个类MovableObject和FixedObject继承自该类。现在,例如,如果我创建一个MovableObject的实例并将其添加到Sprite矢量和MovableObject矢量中,则可以执行以下操作:
Vector<Sprite*> sprites;
Vector<MovableObject*> movableObjects;
MovableObject* movingObject = new MovableObject();
sprites.push_back(movingObject);
movableObjects.push_back(movingObject);
但是随着不同类别和实体的增长,代码将变得越来越大(将每个实体添加到它所属的每个向量中都会很麻烦)。创建对象时,如何自动将对象添加到其所属的向量中?
编辑1:我想我只是想出了一个解决方案,如果我只是制作一个全局静态类Entities来保存场景中所有实体向量的话,该怎么办。每个实体都可以访问该类,并且在创建实体时,只需将自身的指针版本添加到该全局类中的对应向量即可。
编辑2:但是我忘了我的解决方案要求我仍然手动将每个实体添加到其匹配的向量。我只是将工作分配给不同的实体。
最佳答案
这是一个很好的问题。
我想我应该像这样实现它:addToVector()
类中将有一个Sprite
方法,每个派生类都将覆盖它,以将其自身添加到相应的向量中。