конструктор класса наследования c ++

У меня есть небольшая проблема, когда, честно говоря, я полностью запутался с конструкторами производных классов и мне нужна помощь.

У меня есть базовый класс с параметризованным конструктором:

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

и производный конструктор класса

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

По сути, я хочу передать параметры, которые используются в конструкторе базового класса, в конструктор производного класса. Я пробовал несколько разных способов, и в настоящее время я получаю сообщение об ошибке «no initializer for».

Есть ли у кого-нибудь помощь для меня или может помочь мне в понимании моей проблемы. Любая помощь приветствуется.

Спасибо за ваше время,

Алин.

редактировать :

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

}

-1

Решение

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

По вопросам рекламы [email protected]