类的union成员,及其初始化
我想做一个物理引擎,里面要有各种形状。
由于奇怪的原因,我不能把形状做成不同的派生类,所以把这些类型都揉到一起。
结果我发现,不知道怎么初始化一个union成员?
// 先考虑两个最容易的形状typedef enum { SHAPE_SPHERE, SHAPE_BOX} ShapeType;// 球的数据typedef struct { float radius;} SphereData;// 长方块的数据struct { float size_x; float size_y; float size_z;} BoxData;// 揉到一起typedef union { SphereData sphere; BoxData box;} ShapeData;class Shape {public: // 通过参数类型决定shape的类型。 // 如何初始化一个union的成员? Shape(const SphereData& data); Shape(const BoxData& data); //...... Shapedata data; ShapeType type;};