Frage zur Mehrfachvererbung (Diamand Problem)
-
Folgende Konstellation:
class A{ DATA.... }; class B1 : public virtual A{ protected: void funk() }; class B2: public virtual A{ protected: void funk() }; class C : public B1, B2{ private: void Probem(){ funk(); <---- } };Welche funktion wird nun aufgerufen?? funk() von B1 ode B2??
-
Erstmal gar keine, weil der Compiler vor der selben Frage steht wie du (und der beantwortet diese Frage mit einer Fehlermeldung ala "mehrdeutiger Aufruf"). Das heißt du mußt explizit angeben, welche Funktion du haben willst - entweder 'B1::funk();' oder 'B2::funk();'.
-
ok danke;) verstanden:)