0

この質問はどこに聞いても見つかりません...だから、ここで何か非常に間違ったことをしていると思います...

int パラメーターを受け取るコンストラクターを持つ基本クラス A があるとします。派生クラス B で、そのコンストラクターを呼び出したいと思いますが、B のコンストラクターで渡されたメンバー参照も初期化します。これどうやってするの?基本クラスのコンストラクターを呼び出すと、初期化リストを追加する構文が見つかりません。これは可能ですか?

私が持っているとしましょう:

Class Object
{
   Object(){}
}

Class A
{
   A(int number) : m_number(number){}

public:
   int m_number;
}

では、A のデフォルト以外のコンストラクターを呼び出したい場合、m_obj をどのように初期化すればよいでしょうか?

例えば

Class B : Class A
{
   B(int number, const Object& objRef) : A(number)
   {
       m_obj = objRef; //error, : must be initialized in constructor base/member  
                       // initializer list...but I cannot access an initializer list!!
   }

private: 
   const Object& m_obj;
}

私が言ったように、私の意図はおそらくここですべて間違っていますが、それが有効であれば、グーグルで構文例を見つけることができません..

私に簡単に行きます... :)

4

1 に答える 1

3

コンストラクターの初期化リストで:

B(int number, const Object& objRef) : A(number), m_obj(objRef)
{}

(注、これはサブクラスであることとは関係ありません。参照であるメンバー変数を初期化するには、常に初期化リストを使用する必要があります。)

于 2013-02-02T17:23:20.370 に答える