Eine Frage zur mehrfachen Vererbung
-
Hallo,
Ich habe eine Klasse A und eine Klasse B die von A abgeleitet ist. Weiter ex. eine Klasse C die von B abgleitet wurde. Sprich...
class A {...}; class B : public A {...}; class C : public B {...};Jetzt ist es so das ich die Methoden und Objekte der Klasse A in umbenannter Form noch einmal in Klasse C benötige. Das wäre sowas wie...
class A {...}; class B : public A {...}; class C : public B, public A_renamed {...};Was kann ich da machen? Meine A.h und A.cpp nach A_renamed.h und A_renamed.cpp kopieren sowie die Klasse, Methoden und Objekte umbennenen oder gibt es einen eleganteren Weg?

Besten Dank und Grüße
-
Du könntest die Klasse A_renamed von A ableiten und dort alle neuen Methoden auf die alten abbilden:
class A { public: int test(int); ... }; class B: public A { ... }; class A_renamed : private A { public: int new_test(int i) { return A::test(i); } }; class C:public B,public A_renamed { ... //erbt test über A->B und new_test über A_renamed }(Aber Randfrage: Was soll der Sinn des Ganzen sein?)
-
Danke, so was hab' ich gesucht.
Der Sinn kommt z.B. bei einer Netzwerkkarte im Vlan-Modus.
Die hat eine physische und eine virtuelle Mac-Addresse. Zwar wird im Vlan Mode die Karte im sog. promiscuous Mode gefahren und damit interessiert die physische Mac nicht mehr aber dennoch ist's schön sich daran zu erinnern wenn sie wieder aus dem Vlan Mode geschaltet wird.
Ja, und die virtuelle Mac Adresse ist natürlich nötig. Darum eine Klasse MacAddrVlan_t.
Weiter wird die Klasse MacAddr_t noch an zwei anderen Klassen vererbt. Die sind für 'normale' und parallel geschaltete Netzwerkkarten notw.
Deswegen meine Frage...
-
Das alles ist doch trotzdem kein Grund, die selben Methoden ploetx=zlich mit anderen Namen zu bezeichnen oder? Ich sehe da nur verstaendnisprobleme kommen wenn du den ganzen Kram spaeter mal warten willst (a la "hm die Methode heisst anders, also muss sie wohl was anderes machen, aber was?")