Sagen wir, wir haben eine Klassenhierarchie. Am unteren Ende haben wir Basis und oben Abgeleitet. So ermitteln Sie die Objektklasse, selbst wenn sie in den Basisklassenzeiger konvertiert wird.So ermitteln Sie den tatsächlichen Objekttyp zur Laufzeit in C++;
Base* b = new Derived():
typeid(b).name(); // i want this to tell me that this is actually derived not base object
Gibt es eine andere Möglichkeit als manuelle Implementierung von String-Feld oder solche und virtuelle Get-Funktion?
PS: Ich spreche von Compiler-unabhängige Lösung
Dies ist möglich, wie in der Antwort erklärt, aber das ist fast immer eine falsche Sache zu tun. Was versuchst du hier zu erreichen? –
Nichts genau es ist nur für den Zweck der Argumentation :) – user1079475
Mehr anwendungsorientierte Version: http://stackoverflow.com/questions/351845/finding-the-type-of-an-object-in-c || Generische Version, die Vererbung nicht erwähnt: http://stackoverflow.com/questions/11310898/how-do-i-get-the-type-of-a-variable –