结构的匿名联合中的C ++成员初始化列表

时间:2016-07-27 20:36:11

标签: c++ struct initialization unions

我有以下课程:

class LineSegW {
public:

    union {
        struct {
        public:
            int sx;
            int sy;
            int ex;
            int ey;
        };

        struct {
        public:
            Vec2i s;
            Vec2i e;
        };
    };

    int w;

    LineSegW(int _sx, int _sy, int _ex, int _ey, int _w) : 
        sx(_sx), sy(_sy), ex(_ex), ey(_ey), w(_w) {}
};

Vec2i只包含2个整数。现在问题是给定的构造函数没有初始化类成员,除了不在union中的整数w。当我将构造函数编写为

LineSegW(int _sx, int _sy, int _ex, int _ey, int _w) {
    sx = _sx;
    sy = _sy;
    ex = _ex;
    ey = _ey;
    w = _w;
}

一切都按预期工作。两种变体都不会产生警告或错误,因此第一个选项有什么问题?

0 个答案:

没有答案