-1

老实说,我有一个小问题,我对派生类构造函数完全感到困惑,需要一些帮助。

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

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

}
4

2 回答 2

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

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

于 2013-04-08T12:09:48.263 回答
0

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

上面的代码示例应该可以工作。

于 2013-04-08T11:55:03.280 回答