Mehrfachvererbung unter folgenen Bedingungen:
-
Code:
class A{ DATA x; }; class B1: public A{ void funkA(); }; class B2: public A{ void funkB(); }; class C: public B1, public B2{ }nun köntne ich die funktionalitä von b1 und B2 in C verwenden, hätte ich dann 2 gekonte DATenobkete aus A??
-
Ja, hast du. Du hast etwa sowas:
A+B1 - A+B2 - C im Speicher. Das kannst du nur durch virtuelle Vererbung umgehen. Siehe auch: http://en.wikipedia.org/wiki/Diamond_problem
-
Jup. Umgehen kannst du das mit virtueller Vererbung:
class A{ DATA x; }; class B1: public virtual A{ void funkA(); }; class B2: public virtual A{ void funkB(); }; class C: public B1, public B2{ }In diesem Fall enthält C nur ein A-Objekt.
Das ist die technische Lösung, allerdings ist Mehrfachvererbung die Klassen mit Daten einschließt in den seltesten Fällen sinnvoll/nötig. Hoffe du hast gut über dein Design nachgedacht.