C ++: inicialização do campo herdado
Eu tenho uma pergunta sobre a inicialização de membros herdados no construtor da classe derivada. Código de exemplo:
class A
{
public:
int m_int;
};
class B: public A
{
public:
B():m_int(0){}
};
Este código me fornece a seguinte saída:
In constructor 'B::B()': Line 10: error: class 'B' does not have any field named 'm_int'
(Vejohttp://codepad.org/tn1weFFP)
Eu estou supondo por que isso acontece?m_int
deve ser membro deB
e classe paiA
já deve ser inicializado quando a inicialização dom_int
noB
acontece (porque os construtores pai são executados antes da inicialização do membro da classe herdada). Onde está um erro no meu raciocínio? O que realmente acontece neste código?
EDIT
: Conheço outras possibilidades de inicializar esse membro (construtor de base ou atribuição no construtor derivado), mas quero entender por que isso é ilegal na maneira como o tento? Algum recurso específico da linguagem C ++ ou algo assim? Por favor, aponte-me para um parágrafo no padrão C ++, se possível.