"instanceof" unter c++ ?
-
Gibt es sowas wie das instanceof aus java auch unter c++ ? Oder wie finde ich sonst zur Laufzeit herraus von welcher Klasse mein objekt stammt ?
Danke euch
-
typeid, nicht?
-
Berücksichtig typeid überhaupt die Ableitungen? Was liefert typeid bei der Frage, ob Elefant ein Tier ist (ich habs nicht ausprobiert)?
IMO besser ist dynamic_cast. Wenn der cast fehlschlägt, liefert er einen NULL-Pointer, der in einer if-Abfrage als false interpretiert wird.
-
Bei Borland:
class Tier {}; class Kroete : public Tier {}; int main() { Tier a; Kroete b; cout << (typeid(a) == typeid(b)); // false return 0; }
...ohne Probleme erkannt.
-
Strogij schrieb:
Bei Borland:
class Tier {}; class Kroete : public Tier {}; int main() { Tier a; Kroete b; cout << (typeid(a) == typeid(b)); // false return 0; }
...ohne Probleme erkannt.
Zu typeid hab ich gerade auch nachgelesen. Also so ganz ist das wirklich nicht,was ich suche, weil man in diesem fall ja unter java schon ein true bekommen würde, wenn man fragen würde, ob Kroete ein Tier ist.
sprichif (b instanceof Tier){..} // true
-
Dann solltest du es wohl mit dynamic_cast<>() machen, wie es Optimizer vorgeschlagen hat.
-
Cool, danke euch beiden.