学校のコース用にゲームを開発しています。割り当ての 1 つは、ゲームをファイルに保存し、後で同じファイルからゲームをロードできるようにすることです。
私が抱えている問題はポインターです。私はスタック上に何も割り当てていません (たとえば、アイテムの所有権のため)。そのため、すべてのクラスは、参照が必要なものへのポインターを持っています。
これは非常に簡単に解決できますが (各オブジェクトに ID を割り当て、ポインターの代わりにその ID を保存します)、実際の問題は多重継承に伴います。
クラス Actor を例にとってみましょう。これは次のようになります: class Actor : public Object, public ItemOwner
whereObject
は、retain count と release、retain および autorelease メソッドを持つ 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 へのポインタがある場合、そのActor は常に含まれる Object と同じアドレスを持ちます(Actor *foo = new Actor(); foo == (Object *)foo)
か? ゲーム内のすべてのクラスに ID が必要になるわけではありません。
ご意見やご提案をいただければ幸いです。