继承类构造函数

c++ Inheritance class constructor

本文关键字:构造函数 继承      更新时间:2023-10-16

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

我有一个带有参数化构造函数的基类:
Element::Element(RandomNumber &rnd, Console &console) 
: rnd(rnd), console(console)

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

基本上,我想将基类构造函数中使用的参数传递给派生类构造函数。我已经尝试了许多不同的方法,目前我得到的错误信息是'no initializer for'。

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

感谢您的宝贵时间,

Alyn .

编辑:

IntelliSense: "Jetsam::Jetsam(RandomNumber rnd, Console console)" provides no         initializer for:  e:c++my gamemy gamejetsam.cpp   7
编辑:

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

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

Ref my comment -如果你的成员变量被声明为引用,你需要像这样定义你的派生构造函数:

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

我假设你的声明与上面的类似。如果有明显的不同,你能修改你的问题吗?