c ++ Mehrere Eltern mit demselben Variablennamen

8
%Vor%

Was passiert hier? Wird die Variable zusammengeführt? Kann ich einen in genau wie, B :: var = 2, etc.

aufrufen     
nahpr 03.09.2012, 23:33
quelle

3 Antworten

10

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),

%Vor%

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 .

    
user1071136 03.09.2012, 23:40
quelle
2

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.

    
Jesse Good 03.09.2012 23:40
quelle
1

Sie können auf sie in Klasse C durch A::var bzw. B::var zugreifen.

Hier ist ein Link, der dasselbe Problem behandelt.

    
Seçkin Savaşçı 03.09.2012 23:39
quelle