2016-04-04 14 views
1

正しいトラックに入っているかどうかはわかりません。別のクラスの中でパラメータ化されたオブジェクトを初期化する必要がありますが、これを行う方法がわかりません。私のポイントを明確にするためのコードスニペットは、別のクラスでパラメータ化されたオブジェクトの初期化

class base 
{ 
private: 
    bool data_present; 
    public: 
    /*base() 
    { 
    cout<<" base :default constructor called"<<endl; 
    data_present = false; 
    }*/ 
    base(bool present) 
    { 
    data_present = present; 
    } 

    bool present() 
    { 
    return data_present; 
    } 
}; 

class derived :public base 
{ 
    private: 
    int _value; 
    public: 
    /*derived() 
    { 
    cout<<" derived :default constructor called"<<endl; 

    }*/ 
    derived(int value):base(1) 
    { 
    _value = value; 
    } 
}; 

class test 
{ 
    public: 
    test(int data) 
    { 
    cout<<"test: parameter's constructor "<<endl; 
    } 
    derived return_data() 
    { 
    return d; 
    } 

    private: 
    derived d; 
}; 

int main() 
{ 
    test t(100); 
    return 0; 
} 

私の意図は、100の値は、この上で私を助けてください_value.Canの誰に移入されるように、テストのコンストラクタに派生パラメータ化コンストラクタを初期化することです。

+0

「派生」のコンストラクタに示されているように、コンストラクタ*初期化子*リストについては既に少し知っています。あなたはそれらについてもっと読む必要があります。 –

答えて

1

あなたはちょうどあなたが基本サブオブジェクトのクラスderivedのコンストラクタに何をすべきかのように、指定されたコンストラクタで非静的メンバ変数を初期化するためにmember initialize listを使用することができます。

class test 
{ 
    public: 
    test(int data) : d(data) 
        ~~~~~~~~~ 
    { 
    cout<<"test: parameter's constructor "<<endl; 
    } 
    derived return_data() 
    { 
    return d; 
    } 

    private: 
    derived d; 
}; 
関連する問題