質問: 現在C言語で3Dゲームを作っているのですが プレイヤー エネミー オブジェクト エフェクト 等を struct THING ; 構造体で扱っているのですが,オブジェクトやエフェクトを新しい構造体で作って THING charactor[]; THING effect[]; THING object[]; それをfor文で回そうと思ったんですが、まとめた方がいいんじゃないか? と思い、 THING thing[]; の1つで全てを管理しようと思っています。 どちらの方がよろしいのでしょうか?
回答: まさにオブジェクト指向が誕生する瞬間ですね。 > > THING thing[]; > > の1つで全てを管理しようと思っています。 > > > こうしておいて、 ``` struct THING { struct CLASS class; ... } struct CLASS { void (*機能1)(struct THING* this, int arg1, int arg2); int (*機能2)(struct THING* this, char* arg1); } /* 機能1呼び出し */ x->class->機能1(x, 2, 3); ``` みたいにして、プレイヤー、エネミー、オブジェクト、エフェクトの CLASS 構造体を作れば、 THING にポルモアフィズム(多様性)をもたせることができます。