我正在用 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/