type_info::name für unterschiedliche Klassen immer verschieden?



  • Oh sorry, ich hab deinen Beitrag vorhin zu wenig genau gelesen...

    Dann sollte es eigentlich auch ein einfacher Zeiger tun, oder?


  • Administrator

    Nexus schrieb:

    Dann sollte es eigentlich auch ein einfacher Zeiger tun, oder?

    Ja, nur hast du dann Probleme diesen Zeiger zu vergleichen. Es ist nicht garantiert, dass immer das gleiche Objekt für den gleichen Typen zurückgeliefert wird. Der Vergleich muss also über das Objekt gehen, auf welches der Zeiger zeigt. Dafür ist eben der Wrapper da.

    Grüssli



  • Ja, der Wrapper ist halt bequem anzuwenden, weil du dir das Zeiger-Dereferenzieren sparen kannst. 😉

    Aber die Lebensdauer von std::type_info -Objekten ist schon etwas merkwürdig. Ich hätte nicht gedacht, dass die so eine Ausnahme darstellen. Das lädt ja direkt zu Memory Leaks ein...



  • Nexus schrieb:

    Das lädt ja direkt zu Memory Leaks ein...

    Ist glaube ich sogar legal, nur macht das keiner. In der Regel gibt es genau ein type_info Objekt per Typ und in jede vtable wird ein Zeiger darauf reingepackt. Wenn Dlls ins Spiel kommen, dann kann es mehrere type_info Objekt per Typ geben. Halt einen in jedem Modul. Da der Standard keine Dlls kennt greift er halt auf eine so wage Formulierung zurück.



  • Dravere schrieb:

    C++ Standard 98:
    Kapitel 5.2.8 Type Identification
    Abschnitt 1

    The result of a typeid expression is an lvalue of static type const std::type_info (18.5.1) and dynamic type const std::type_info or const name where name is an implementation-defined class derived from std::type_info which preserves the behavior described in 18.5.1. The lifetime of the object referred to by the lvalue extends to the end of the program. Whether or not the destructor is called for the type_info object at the end of the program is unspecified.

    Grüssli

    okay, vielen dank! 🙂 die lebensdauer der rückgabe von typeid hat mich doch etwas irritiert, aber damit wäre das problem jetzt für mich gelöst. die idee mit dem template von ben04 ist auch nicht schlecht, aber so ist das vorerst doch etwas unkomplizierter. 🤡


Anmelden zum Antworten