私の学校のコースのゲームを開発しています。割り当ての1つは、ゲームをファイルに保存し、後で同じファイルからゲームをロードできるようにすることです。C++でのファイルへのポインタの保存
私が持っている問題は、ポインタです。私はスタック上に(例えばアイテムの所有権のために)何も割り当てていないので、すべてのクラスには参照が必要なものへのポインタがあります。
これは非常に簡単です(各オブジェクトに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;
のようないくつかのメソッドを持つインターフェイスです。実際の質問は、どのクラス(ID? ItemにはItemOwnerへのポインタがあり、RoomにはActorへのポインタがあります。 アクタは一度保存する必要があります。
各スーパークラス(Object、ItemOwnerなど)にIDを割り当てることについて考えましたが、アクターへのポインタがあれば、そのアクターは常にオブジェクトと同じアドレスを持ちます(Actor *foo = new Actor(); foo == (Object *)foo)
?そうでなければ、ゲーム内のすべてのクラスにIDが必要です。
ご意見やご提案をいただければ幸いです。
これはhttp://en.wikipedia.org/wiki/Serializationのトピックに該当します。 – Sabuncu
複数の継承はここでは不要です。 'ItemOwner'も' Object'を継承しませんか? – jwueller
Actor :: release()を呼び出すと2回削除され、ItemOwnerは単なるインターフェイスなので、本当にそうではありません。 –