Wenn ich die beiden Klassen CKlasseA und CKlasseB instanziere, dann kann ich Atmen() und Pusten() nicht ausführen, da der Compiler die Methoden nicht findet. Wenn ich die rein virtuelle Funktion Atmen() aufrufe, dann geht das. Atmen() und Pusten() möchte ich jedoch nicht in der Base-Class implementieren, da sie nur für die entsprechenden Abgeleiteten Klassen gültig sein sollen.
dynamic_cast ist halt sicherer, das gibt NULL zurück wenn das angeforderte Objekt eben nicht zum Speicherbereich passt. arbeitet aber z.b auch nicht korrekt wenn man z.b sowas hat:
C++:
struct A { B var; // ... sonstige };
B test; void *ptr = (void*)&test;
A *p = dynamic_cast<A*>(ptr);
das gibt trotzdem einen pointer zurück, nur sind die elemente alle NULL, das find ich etwas scheisse
wenn ich nen C-Cast mache (eben das was ich dir gesagt hatte) ist das selbe ergebnis, also kann ich mir den dynamic_cast schenken -- class God : public ChuckNorris { };