Я не могу найти этот вопрос, даже когда его где-то задают … так что это заставляет меня поверить, что я делаю что-то очень неправильно здесь …
Допустим, у меня есть базовый класс 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 ..
полегче со мной…:)
В списке инициализации конструктора:
B(int number, const Object& objRef) : A(number), m_obj(objRef)
{}
(Обратите внимание, это не имеет никакого отношения к тому, что это подкласс. Вам всегда нужно использовать список инициализации, чтобы инициализировать переменную-член, которая является ссылкой.)
Других решений пока нет …