Methode einer Klasse über eine andere überschreiben?
-
Hallo,
ich hab eine Frage zu folgendem Problem. Ich habe eine Klasse A mit virtuellen methoden die sich überschreiben lassen. Dann habe ich eine Klasse B die NICHT von Klasse A abgeleitet ist, aber genau die Methoden von der Signatur wie Klasse A hat. Dann habe ich eine Klasse C die Klasse A und B besitzt. Jetzt würde ich gerne mit den Methoden aus Klasse A die in C über A überschreiben. Ein kleines Beispiel
class A { public: virtual test() { printf("Klasse A");} }; class B{ public: test() { printf("Klasse B");} }; public C : public A, public B { } main () { C t; t.test(); //also ausgabe sollte also "Klasse B" erscheinen. }
Ich könnte diese natürlich auch anders ableiten um "Klasse B" zu erhalten, aber eventuell klappt das ja so..
Wie man sieht habe ich also versucht die Methode aus Klasse A in Klasse C mit denen von Klasse B zu überschreiben.
Hat einer eine Idee ob das klappen kann?
Danke, mfg donnerCobra
-
Hättest Du das mal durch den compiler gejagt, hättest Du festgestellt, das es so nicht geht.
public C : public A, public B { }
muß heissen:
class C : public A, public B { }
und 2.
bekommst Du dann die Meldung das er nicht weiss welche Methode (aus der Klasse A oder er benutzen soll.Eine mMöglichkeit ist:
class A { public: virtual test() { printf("Klasse A");} }; class B{ public: test() { printf("Klasse B");} }; public C : public A, public B { public: void test() {B::test();} } main () { C t; t.test(); //also ausgabe sollte also "Klasse B" erscheinen. }
was aber dem gleichen entspricht, als wenn Du gleich eine Instanz der Klasse B erstellen würdest. Aber vielleicht habe ich dein Problem auch nur Falsch verstanden.
Gruß Matthias