c ++继承类构造函数

时间:2013-04-08 11:51:43

标签: c++ class derived

我有一个小问题说实话我完全与派生类构造函数混淆并需要一些帮助。

我有一个带参数化构造函数的基类:

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

的派生类构造函数
Jetsam::Jetsam(RandomNumber rnd, Console console):Element(rnd,console)

基本上我想将基类构造函数中使用的参数传递给派生类构造函数。我尝试了许多不同的方法,目前我收到错误消息“没有初始化器”。

有没有人对我有任何帮助,或者可以帮助我理解我的问题。任何帮助将不胜感激。

感谢您的时间,

Alyn。

编辑:

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)
{

}

2 个答案:

答案 0 :(得分:0)

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

以上代码示例应该有效。

答案 1 :(得分: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) {}
};

我认为您的声明与上述类似。如果问题明显不同,你可以编辑你的问题吗?