C++ c++;继承类构造函数

C++ c++;继承类构造函数,c++,class,derived,C++,Class,Derived,我有一个小问题,老实说,我完全混淆了派生类构造函数,需要一些帮助 我有一个带参数化构造函数的基类: Element::Element(RandomNumber &rnd, Console &console) : rnd(rnd), console(console) 和的派生类构造函数 Jetsam::Jetsam(RandomNumber rnd, Console console):Element(rnd,console) 基本上,我希望将基类构造函数中使用的参数传递给派生

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

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

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
编辑:

Jetsam::Jetsam(随机数rnd,控制台):元素::元素(rnd,控制台)


上面的代码示例应该可以使用。

Ref my comment-如果您的成员变量声明为引用,则需要如下定义派生构造函数:

Jetsam::Jetsam(RandomNumber &rnd, Console &console):Element(rnd,console)
例如,以下代码为我编译ok:

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

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

您可以发布完整的错误吗?您在错误中只给出了3个单词。您的成员变量是否声明为引用?如果是,则派生的ctor也需要与基类相同的签名。基类成员的类型是什么
rnd
console
?@RogerRowland是,它们被声明为引用,那么,我该如何使用相同的SIG呢?@borisbn它们是类随机数和控制台的类型这是我最初使用的,但仍然存在如上所述的say错误您还想看到什么吗,我的派生类构造函数目前在其主体中不包含任何内容。您能否显示两个类的精简副本,该副本的大小与上面的代码示例相似,但无法编译?我对其进行了轻微编辑,但我不确定您还想要什么。如果您更改
Jetsam::Jetsam(randomnumernd,Console):元素(rnd,console)
to
Jetsam::Jetsam(RandomNumber&rnd,console&console):元素(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) {}
};