私はコードを持っています:
class Vector4
{
public:
    union
    {
        float x,y,z,w;
        float v[4];
    };
    Vector4(float _x, float _y, float _z, float _w)
    : x(_x), y(_y), z(_z), w(_w)
    {
        std::cout << "Vector4 constructor: " << this->x << "; " << this->y << "; " << this->z << "; " << this->w << std::endl;
    }
};
私が覚えているように、VC 7.1 ではすべて問題ありませんでしたが、VC 2010 では次の警告が表示されました。
警告 C4608: 'Vector4::y' は、初期化子リスト 'Vector4::::Vector4::x' 内の別の共用体メンバーによって既に初期化されています
そして、私が書くとき:
Vector4 vec(1.0f, 0.0f, 0.0f, 0.0f);
コンソールに表示されます:
Vector4 コンストラクター: 0; 0; 0; 0
教えてください、何が起こっているのですか?