2013-04-08 108 views
-1

我有一個輕微的問題,老實說,我完全與派生類構造函數混淆,需要一些幫助。C++繼承類的構造函數

我與參數化構造一個基類:

Element::Element(RandomNumber &rnd, Console &console) 
: rnd(rnd), console(console) 

Jetsam::Jetsam(RandomNumber rnd, Console console):Element(rnd,console) 

基本上我想派生類的構造來傳遞時使用的基類的構造內到參數派生類的構造函數。我嘗試了許多不同的方式,目前我收到錯誤消息'沒有初始化程序'。

有沒有人對我有任何幫助,或可以幫助我理解我的問題。任何幫助將非常感激。

謝謝你的時間,

艾琳。

編輯:

IntelliSense: "Jetsam::Jetsam(RandomNumber rnd, Console console)" provides no   initializer for: e:\c++\my game\my game\jetsam.cpp 7 

編輯:

Element::Element(RandomNumber &rnd, Console &console) 
: rnd(rnd), console(console) 
{ 

} 

Jetsam::Jetsam(RandomNumber rnd, Console console):Element(rnd,console) 
{ 

} 
+0

你能發佈完整的錯誤嗎?你從錯誤中只給出了3個單詞。 – 2013-04-08 11:53:13

+0

你的成員變量是否聲明爲引用?如果是這樣,你派生的Ctor也需要與基地相同的簽名。 – 2013-04-08 11:56:50

+0

什麼是基類'成員'rnd'和'console'的類型? – borisbn 2013-04-08 11:57:19

回答

0

Jetsam::Jetsam(RandomNumber rnd, Console console): Element::Element(rnd,console);

上面的代碼示例應該工作。

0

參考我的意見 - 如果你的成員變量聲明爲引用,您需要定義這樣的派生的構造函數:

Jetsam::Jetsam(RandomNumber &rnd, Console &console):Element(rnd,console) 

例如,下面的代碼編譯確定對我來說:

// dummy classes for use as member variables 
class RandomNumber{}; 
class Console{}; 

// base class 
class Element 
{ 
public: 
    Element(RandomNumber &rnd, Console &console) : rnd(rnd), console(console) {} 

    // member variables 
    RandomNumber& rnd; 
    Console& console; 
}; 

// derived class 
class Jetsam : public Element 
{ 
public: 
    Jetsam(RandomNumber &rnd, Console &console) : Element(rnd, console) {} 
}; 

我假設你的聲明與上面類似。你可以編輯你的問題,如果它顯着不同?

+0

這是我最初使用的,仍然有上面說的錯誤 – Alyn 2013-04-08 12:15:05

+0

請參閱上面的編輯 - 你可以發佈你的代碼的更多細節? – 2013-04-08 12:21:13

+0

好的謝謝,看看編輯。 – Alyn 2013-04-08 12:31:45