У меня вопрос об инициализации наследуемых членов в конструкторе производного класса. Пример кода:
class A
{
public:
int m_int;
};
class B: public A
{
public:
B():m_int(0){}
};
Этот код дает мне следующий результат:
In constructor 'B::B()':
Line 10: error: class 'B' does not have any field named 'm_int'
(см. http://codepad.org/tn1weFFP)
Я предполагаю, почему это происходит? m_int
должен быть членом B
, а родительский класс A
уже должен быть инициализирован при инициализации m_int
in B
(поскольку родительские конструкторы выполняются до инициализации элемента унаследованного класса). Где ошибка в моих рассуждениях? Что действительно происходит в этом коде?
EDIT
: Я знаю о других возможностях инициализации этого члена (базовый конструктор или назначение в производном конструкторе), но я хочу понять, почему это незаконно в том, как я это пробовал? Некоторые особенности языка С++ или такие? Пожалуйста, укажите, пожалуйста, параграф в стандарте С++.