2016-05-12 43 views
1

Ich habe die Anzahl der Klassen Klasse 1, Klasse 2 usw. Erben Klasse A und Klasse B (aber nicht alle Klassen erben beide Klassen).Design mit mehreren Vererbung und abhängigen Elternklassen

-Code sieht wie folgt aus:

class 1: public A, public B 
{ 
    getVar() { return mVar; } 
} 

class 2: public A, public B 
{ 
    getVar() { return mVar; } 
} 

class A 
{ 
    protected: int mVar; 
} 

class B 
{ 
    virtual int getVar()=0; 
} 

Hier bin ich immer variabel von Klasse A in der Klasse B. Aber dafür habe ich getVar() { return mVar; } in allen Klassen implementieren (classN), die von den beiden A ableiten und B.
Was sollte der richtige Design-Ansatz sein, so dass ich eine Standardimplementierung geben kann und nicht denselben Code in allen abgeleiteten Klassen schreiben muss.

+0

Um hier einen Rat zu bekommen, musst du dein Beispiel mehr "real" * machen (sprich von real, schreibe bitte keine Dinge wie 'Klasse 1:. .. 'in Ihrem Beispiel ... machen Sie den Code so gut wie möglich geformt) *. Wie wird das verwendet? Wie soll sich getVar() für Klassen verhalten, die nur von B erben? Wenn Sie von A erben und dann der a-Zeiger auf A hochgesetzt wird, sollten Sie dann noch '-> getVar()' auf dem 'A *' aufrufen können? Grundsätzlich gilt: Wenn Sie in mehrfache Vererbung waten wollen, müssen Sie den Anwendungsfall, warum Sie es tun, wirklich festnageln. – HostileFork

Antwort

1

Definieren Sie die Klasse C, die von A und B erbt und implementieren Sie dort getVar() { return mVar; }. Dann kannst du von C erben, wo du vorher von A und B geerbt hast.

Verwandte Themen