Ihre Klasse C
hat zwei Variablen, B::var
und A::var
. Außerhalb von C
können Sie so auf sie zugreifen (wenn Sie zu public:
wechseln),
Der Versuch, auf c.var
zuzugreifen, führt zu einem Fehler, da kein Feld mit dem Namen var
, nur A::var
und B::var
vorhanden ist.
Innerhalb von C
verhalten sie sich wieder wie normale Felder mit den Namen A::var
und B::var
.
Wenn Sie sich nur auf var
innerhalb von C
beziehen, weiß der Compiler nicht, ob Sie A::var
oder B::var
meinen und der Compiler wird Ihnen sagen, dass var
mehrdeutig ist. Daher müssen Sie den Namen bei Verwendung von var
vollständig qualifizieren.
Es findet keine Zusammenführung statt, jede Instanz von C
enthält beide Variablen.
Sie können auf sie in Klasse C durch A::var
bzw. B::var
zugreifen.
Hier ist ein Link, der dasselbe Problem behandelt.
Tags und Links c++ inheritance multiple-inheritance