instanceof
-
Hallo C++ler,
Ich suche eine Möglichkeit wie ich überprüfen kann ob etwas instanceof ist...
class ClassA{ ... } class ClassB{ ... } class ClassC : public ClassA, public ClassB{ ... }
Jetzt möchte ich in einer Methode testen ob ein Objekt des Typ ClassA auch
instanceof ClassB ist...
Ich hab gehört, dass soll mit nem dynamic_cast gehen...
Der soll 0 bei Pointern zurückliefern, wenn es nicht so istbool teste(ClassA* a){ return dynamic_cast<ClassB*>(a); }
Leider kompiliert er das nicht mit der Begründung, dass ClassA nicht polymorph ist.
Wer kann mir da weiterhelfen?
Gruß,
CSpille
-
Du musst mindestens eine virtuelle Funktion haben damit das funktioniert. Mach den Destruktor virtuel. Das sollte er in den allermeisten Fällen in denen Vererbung im Spiel ist sowieso sein.
-
Bloß das hier ClassA und ClassB gar nicht verwandt sind.
-
Aber wenn ich der Methode einen Typ ClassC* übergebe ist er trotzdem instanceof ClassB*...
-
Danke Ben04...
Werde ich gleich ausprobieren, wenn ich daheim bin.
Wann sollte ein Destuktor denn virtuell sein bzw. was bewirkt das?
-
-
Durch den virtuellen Destruktor wird in jedem Fall das ganze Objekt gelöscht
und nicht nur Teile, wenn ich die Basis-Klasse lösche...Anders hab ich also Daten-Müll im Speicher, oder?
thx