C ++: инициализация унаследованного поля
У меня есть вопрос об инициализации унаследованных членов в конструкторе производного класса. Пример кода:
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 ++, если это возможно.