Doppelte vererbung?
-
Hallo,
geht das folgende überhaupt?
class A_Basis { protected: virtual void foo() = 0; } class B : A_Basis { protected: void foo(); virtual void bar() = 0; }; class C : B { protected: void bar(); };
-
Inwiefern soll es denn gehen oder nicht gehen? Und: Wenn du schon den Test-Code schreibst und dich sogar testo nennst, warum schnappst du dir nicht deinen Compiler und probierst es aus

-
ich wollte nur wissen ob es möglich ist eine abgeleitete klasse auch als basisklasse zu definieren sozusagen....
-
testo schrieb:
ich wollte nur wissen ob es möglich ist eine abgeleitete klasse auch als basisklasse zu definieren sozusagen....
das wird staendig gemacht, wenn nicht sogar fast immer

-
danke jetzt weiß ich dass es geht und ich nur irgendwo ein anderes Problem habe:
es kann kein Objekt des abstrakten Typs »ClassB<double>« belegt werden denn die folgenden virtuellen Funktionen sind rein innerhalb »ClassB<double>«: Anmerkung: void ClassB<T>::test() [with T = double]ich dachte diese meldung wäre weil es gar nicht möglihc ist.....
-
Naja du kannst halt keine Instanz von B haben ...
-
hmm....aber warum kann ich dann eine Instanz von A haben?
-
Kannst du nicht.
class base { protected: virtual void func() = 0; } class foo : public base { protected: void func() { std::cout << "foo" << std::endl; } }; class bar : base { protected: void func() { std::cout << "bar" << std::endl; } }; int main() { std::vector<base*> data; data.push_back(new bar); data.push_back(new foo); // ... for (std::vector<base*>::const_iterator it = data.begin(); it != data.end(); ++it) delete (*it); }...
-
es kann kein Objekt des abstrakten Typs »ClassB<double>« belegt werden denn die folgenden virtuellen Funktionen sind rein innerhalb »ClassB<double>«: Anmerkung: void ClassB<T>::test() [with T = double]lol

"pure" an der Stelle mit "rein" zu übersetzen ist wiedermal ganz toll...
Ich sag ja: deutsche Fehlermeldungen, und es kennt sich keine Sau mehr aus.