У меня вопрос об инициализации унаследованных членов в конструкторе производного класса.Пример кода:
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
в B
(поскольку родительские конструкторы выполняются до инициализации члена унаследованного класса).ошибка в моих рассуждениях? Что на самом деле происходит в этом коде?
EDIT
: мне известны другие возможности инициализации этого члена (базовый конструктор или присваивание в производном конструкторе), но я хочупонять, почему это незаконно в том, как я это пробую? Какая-то особенная особенность языка C ++ или такая? Пожалуйста, укажите мне параграф в стандарте C ++, если это возможно.