我正在为学校的一门课程开发游戏。其中一项任务是启用将游戏保存到文件,然后从同一文件加载游戏。
我遇到的问题是指针。我没有在堆栈上分配任何东西(例如,由于项目的所有权),因此所有类都有指向它们想要引用的任何内容的指针。
虽然这很容易解决(为每个对象分配一个 ID 并存储该 ID 而不是指针),但真正的问题来自多重继承。
让我们以Actor类为例。它看起来像这样:class Actor : public Object, public ItemOwner
哪里Object
是一个 Obj-C 风格的基类,它有一个保留计数和释放、保留和自动释放方法。ItemOwner 只是一个接口,它具有一些方法,例如virtual bool add(Item *item) = 0;
,virtual void remove(Item *item) = 0;
和virtual bool transfer_ownership(Item *item, ItemOwner *new_owner) = 0;
现在真正的问题来了,哪个类(es?)应该有ID。Item 有一个指向 ItemOwner 的指针,而 Room 有一个指向 Actor 的指针。演员应该只被保存一次。
我考虑过为每个超类(对象、ItemOwner 等)分配 ID,但是如果我有一个指向 Actor 的指针,那么该 Actor 是否总是与它包含的 Object 具有相同的地址(Actor *foo = new Actor(); foo == (Object *)foo)
?如果不是游戏中的每个班级都需要有一个 ID。
任何想法或建议将不胜感激。