dynamic_cast geht nicht, was ist polymorphic?
-
Ich zeige euch am besten mal meinen Testcode und die Fehlermeldung:
#include <iostream> #include <stdlib.h> class basis { public: int a; }; class meins : public basis { public: int b; void testen(basis* quelle); }; using namespace std; meins* test; int main(int argc, char *argv[]) { test = new meins(); test->a = 5; test->testen(test); delete test; system("PAUSE"); return 0; } void meins::testen(basis* quelle) { meins* ich = dynamic_cast<meins*>(quelle); /* Fehler */ cout << ich->a << endl; }
Compiler schrieb:
main5.cpp: In member function
void meins::testen(basis*)': main5.cpp:30: error: cannot dynamic_cast \
quelle' (of type `class basis*') to
type `class meins*' (source type is not polymorphic)Was ist da Falsch? Und was ist Polymorphic?
-
Beginner_frage schrieb:
Was ist da Falsch?
Das steht in der Fehlermeldung.
Und was ist Polymorphic?
Polymorphic heißt in diesem Fall, dass deine Klasse mindestens eine virtulle Methode besitzt. Da du öffentlich von basis erbst, sollte deine Basisklasse z.B. mindestens einen virtuellen Dtor besitzen:
class basis { public: virtual ~basis() {} int a; }; class meins : public basis { public: int b; void testen(basis* quelle); };