2016-04-04 12 views
1

Doğru yolda olup olmadığından emin değilim. Başka bir sınıf içinde parametreli bir nesneyi başlatmam gerekiyor, ancak bunu nasıl yapacağımı bilmiyorum. benim açımdan kod parçacığını temizlemek yapmak içinbaşka bir sınıftaki parametreli nesne başlatması

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; 
} 

Niyetim 100 bu değer _value.Can kimseye bana bu konuda yardım lütfen doldurulacaktır yüzden test yapıcısı içinde türetilmiş parametreli yapıcı başlatmak için olmasıdır.

+0

"Türetilen" yapıcısında gösterildiği gibi, kurucu * başlatıcı * listeleri hakkında zaten biraz bilgi sahibisiniz. Onlar hakkında daha fazla şey okumalısın. –

cevap

1

member initialize list, derived yapısında temel alt nesne için yaptığınız gibi, sabit olmayan üye değişkeni belirtilen kurucu ile başlatmak için kullanabilirsiniz.

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

    private: 
    derived d; 
}; 
İlgili konular