Как я могу инициализировать ссылку на член const в производном классе, когда я хочу вызвать конструктор базового класса?

Я не могу найти этот вопрос, даже когда его где-то задают … так что это заставляет меня поверить, что я делаю что-то очень неправильно здесь …

Допустим, у меня есть базовый класс A с конструктором, который принимает параметр int.
В моем производном классе B я хочу вызвать этот конструктор, но также инициализировать ссылку на член, переданную в конструкторе B. Как я могу это сделать? Я не могу найти синтаксис для добавления списка инициализации, если я вызываю конструктор базового класса. Это возможно?

Допустим, у меня есть:

Class Object
{
Object(){}
}

Class A
{
A(int number) : m_number(number){}

public:
int m_number;
}

Теперь, как бы я инициализировал m_obj, если бы я хотел вызвать конструктор A по умолчанию?

например

Class B : Class A
{
B(int number, const Object& objRef) : A(number)
{
m_obj = objRef; //error, : must be initialized in constructor base/member
// initializer list...but I cannot access an initializer list!!
}

private:
const Object& m_obj;
}

как я уже сказал, мои намерения, вероятно, все здесь не так, но если это верно, я не могу найти никаких примеров синтаксиса в Google ..

полегче со мной…:)

0

Решение

В списке инициализации конструктора:

B(int number, const Object& objRef) : A(number), m_obj(objRef)
{}

(Обратите внимание, это не имеет никакого отношения к тому, что это подкласс. Вам всегда нужно использовать список инициализации, чтобы инициализировать переменную-член, которая является ссылкой.)

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector