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 ++, если это возможно.

Ответы на вопрос(4)

Ваш ответ на вопрос