私はコードを持っています:
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
教えてください、何が起こっているのですか?