私は次の状況にあります(以下は説明のためだけです):
class Base()
{
public:
Base(int);
};
class Derived : public Base
{
public:
Derived(int, int, bool);
};
派生コンストラクターのブールフラグに応じて基本クラスを初期化したい。(もしあれば)そうする正しい方法は何ですか..
私はできる(しかし、ベースが初期化される前に評価が行われるのか?):
Derived::Derived(int _x, int _y, bool _z) : Base(_z?_x:_y) {}
または(ただし、これはおそらく正しく機能しません)
Derived::Derived(int _x, int _y, bool _z)
{
if(_z)
::Base(_x);
else
::Base(_y);
}
これを行う正しい方法がない場合は、コンストラクターをに追加することで解決できる可能性がありますDerived
。