最初の構造体にコンストラクターがある場合、この 2 番目の構造体を機能させるにはどうすればよいですか? エラーが発生します:
error C2620: member 'test::teststruct::pos' of union 'test::teststruct::<unnamed-tag>' has user-defined constructor or non-trivial default constructor
コード:
struct xyz {
Uint8 x, y, z, w;
xyz(Uint8 x, Uint8 y, Uint8 z) : x(x), y(y), z(z) {}
};
struct teststruct {
union {
Uint32 value;
xyz pos; // error at this line.
};
};
関数を使用して xyz 構造体を初期化することもできますが、それはかなり遅くなりませんか? 言うまでもなく、init_xyz() などのプレフィックスを使用して独自の関数を作成する必要がある構造体がたくさんありますが、これは良くありません。この問題を回避する他の方法はありますか?