C ++: Initialisierung des geerbten Feldes

Ich habe eine Frage zur Initialisierung von geerbten Mitgliedern im Konstruktor der abgeleiteten Klasse. Beispielcode:

class A
    {
public:
    int m_int;
    };

class B: public A
    {
public:
    B():m_int(0){}
    };

Dieser Code gibt Folgendes aus:

In constructor 'B::B()': Line 10: error: class 'B' does not have any field named 'm_int'

(sehenhttp: //codepad.org/tn1weFF)

Ich vermute, warum das passiert?m_int sollte Mitglied von @ seB und ElternklasseA sollte bereits bei der Initialisierung von @ initialisiert sem_int imB passiert (weil übergeordnete Konstruktoren vor der Member-Initialisierung der geerbten Klasse ausgeführt werden). Wo ist ein Fehler in meiner Argumentation? Was passiert wirklich in diesem Code?

EDIT: Ich kenne andere Möglichkeiten zum Initialisieren dieses Members (Basiskonstruktor oder Zuweisung im abgeleiteten Konstruktor), möchte aber verstehen, warum es in der Art und Weise, wie ich es versuche, illegal ist. Eine bestimmte C ++ - Sprachfunktion oder eine solche? Bitte verweisen Sie, wenn möglich, auf einen Absatz im C ++ - Standard.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage