C ++では、一連の構造が定義されています...
struct Component {};
struct SceneGraphNode : Component {};
struct Renderable : Component {};
struct Health : Component {};
これらは簡単にクラスになる可能性があります。C++ にはほとんど違いがないと言われています。
Java では、型の配列を宣言し、Component
そこから拡張 (継承) する任意のクラスを配置できComponent
ます。Java はそれらをすべてコンポーネントと見なし、すべてがスマート ポインターを使用するため、Java の「配列」は実際にはすべて同じサイズのスマート ポインターのリストにすぎません。
ただし、Java は C++ とは大きく異なる配列を処理することを理解しています。これらの各構造体のサイズを確認すると、次のようになりました。
Component // 4
SceneGraphNode : Component // 8
Renderable : Component // 8
Health : Component // 20
これは驚くべきことではありません。コンポーネントの配列を作成すると、ブロックのサイズは明らかに 4 (バイト) になり、他の構造は保持されません。
だから私の質問は、どのようにゆるいリストを保存できますかComponents
(つまり、コンポーネントから継承する任意のクラス/構造体を保存できるリスト)?Java では、これを実行するのは非常に簡単です。確かにC++でそれを行う簡単な方法があるに違いありません。