读书人

类的union成员及其初始化解决方案

发布时间: 2012-05-07 12:40:40 作者: rapoo

类的union成员,及其初始化
我想做一个物理引擎,里面要有各种形状。
由于奇怪的原因,我不能把形状做成不同的派生类,所以把这些类型都揉到一起。
结果我发现,不知道怎么初始化一个union成员?

C/C++ code
// 先考虑两个最容易的形状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;};


[解决办法]
初始化列表或直接在构造函数里赋值
[解决办法]
只能直接在构造函数里赋值。

读书人网 >C++

热点推荐