[solved] Mehrfachvererbung C::f() { A::f(); B::f(); }
-
Hallo,
ich hab eine Klasse, die von zwei Eltern Methoden mit gleichem Namen erbt. Nun wollte ich diese in der Kind-Methode explizit aufrufen, aber dies führt entweder zu Speicherzugriffsfehlern oder Endlosschleifen

#include <iostream> using namespace std; class baseA { public: virtual void out() {cout<<"A"<<endl;} }; class baseB { public: virtual void out() {cout<<"B"<<endl;} }; class derivedC : public baseA { public: void out() {baseA::out(); cout<<"C"<<endl;} }; class derivedD : public baseA, public baseB { public: void out() {baseA::out(); baseB:out(); cout<<"D"<<endl;} }; int main() { baseA A; derivedC C; derivedD D; cout << "-A-" << endl; C.out(); // geht cout << "-C-" << endl; C.out(); // geht cout << "-D-" << endl; D.out(); // hier erscheint das Problem return 0; }Die Methoden heißen alle gleich und die Eltern-Methoden sind virtuell, weil ich Später
baseA*pointer habe, und immer (polymorph)->out()aufrufen möchte.Was mache ich falsch?
Lars
-
In Zeile 25 fehlt ein :

-
Scherzkeks.
Mach die Warnungen an.C:\src\research\tmpcpp\main.cpp|25|warning: label 'baseB' defined but not used|Und jetzt schau mal die zugrhörige Zeile an:
void out() {baseA::out(); baseB:out(); cout<<"D"<<endl;}Alles klar?
-
oh mann.
Danke!!