2012-04-12 7 views
0

Was ist der gute Weg, um das Diagramm in C++ mit Mehrfachvererbung auszudrücken? Oder muss ich in diesem Fall die Mehrfachvererbung verwenden? Kann ich nicht einfach eine Child1- und eine Child2-Instanz in der Basisklasse erstellen und verwenden?Mehrfachvererbung in C++: Was ist der beste Weg, um das Diagramm in C++ mit Mehrfachvererbung auszudrücken?

enter image description here

+2

Was wollen Sie erreichen? Aus diesem Diagramm ist nicht klar. Wenn Sie untergeordnete Instanzen über die allgemeine Schnittstelle verbinden möchten, fügen Sie sie in die Basisklasse ein. –

+0

Ja. Ich möchte die untergeordneten Klassen verbinden. Können Sie mir einen Überblick über den Code geben? – FlintOff

+0

Es hängt davon ab, wie Sie die untergeordneten Fälle verbinden möchten. – juanchopanza

Antwort

0

Dies ist Pseudocode, aber die Hierarchie illustrieren soll:

Lösung 1:

class IBaseInterface {} 

class Base : IBaseInterface {} 

class Child1 : Base {} 

class Child2 : Base {} 

Lösung 2:

class IChildInterface {} 

class Base {} 

class Child1 : Base, IChildInterface {} 

class Child2 : Base, IChildInterface {} 
+0

In Lösung 1: Warum gibt es IBaseInterface? – FlintOff

+0

Weil die Schnittstelle auf der Basisklasse ist, habe ich es so genannt. Die beiden Lösungen sind effektiv: Haben Sie die Schnittstelle, die die untergeordneten Klassen in der Basisklasse verbindet, so dass die untergeordneten Elemente sie erben oder alle untergeordneten Elemente ableiten, die Sie über die Schnittstelle verbinden möchten. – ChrisWue

+0

yup. Und das Ableiten von IWhatever ist ziemlich immer sicher, so dass Sie keine virtuelle Vererbung und all das tun müssen. –

0

„Ich kann nicht erstellt werden nur eine Child1 und eine Child2 Instanz in der Basisklasse und benutze sie? "

denke ich, was Sie versuchen, dies zu erreichen ist, keine Mehrfachvererbung erforderlich:

class IChildInterface {} 

class Base { IChildInterface* child; } 

class Child1: public IChildInterface 
class Child2: public IChildInterface