例は次のとおりです。
struct X {
union {
X* px;
void* pv;
} U;
X();
};
X::X() : /* How to initialize px here? */
{}
私の質問は: クラスのコンストラクターの mem-initializer-list からユニオン サブオブジェクトを初期化する方法は?
例は次のとおりです。
struct X {
union {
X* px;
void* pv;
} U;
X();
};
X::X() : /* How to initialize px here? */
{}
私の質問は: クラスのコンストラクターの mem-initializer-list からユニオン サブオブジェクトを初期化する方法は?
ユニオンにもコンストラクターを与える必要があります。
struct X {
union U_T {
X* px;
void* pv;
U_T(X* ptr) : px(ptr)
{}
} U;
X(X* ptr);
};
X::X(X* ptr) : U(ptr)
{}
やりたいことが 0 に初期化するだけの場合、これは必要ないことに注意してください。コンパイラによって生成された共用体の既定のコンストラクターは、既にそれを行っています。その場合、代わりに次のように変数を定義して、値の初期化を取得します。
X x = X();