在 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
的列表(即一个可以存储从 Component 继承的任何类/结构的列表)?在 Java 中,这非常简单。当然,在 C++ 中必须有一种简单的方法来做到这一点。