Wozu verwendet man type_info ?
-
Hi
Ich habe gerade gesehen, dass es in C++ auch einen typeid Operator gibt welcher std::type_info zurückgibt.
Aber von der Funktion dieser Klasse habe ich, bis auf, dass sie den Namen des Typen sagen kann, noch nicht wirklich was gesehen.
Was kann sie? Wozu verwendet man sie?
-
Such mal mit einer Suchmaschine Deiner Wahl nach RTTI oder Run-time Type Information.
-
Ja, hab ich, aber was das ganze soll hab ich noch nicht verstanden. Etwas wie Reflection kann man damit doch nicht realisieren, oder? Also was damit anfangen?
-
JustAnotherNoob schrieb:
Ja, hab ich, aber was das ganze soll hab ich noch nicht verstanden. Etwas wie Reflection kann man damit doch nicht realisieren, oder? Also was damit anfangen?
Kann man sehr eingeschränkt dafür benutzen.
Man braucht es in erster Linie bei polymorphen Objekten, um den konkreten Typ zu einer gegebenen Basisklassenreferenz zu ermitteln.
-
dynamic_cast
-
dafür gibts doch schon schrieb:
dynamic_cast
Ja, aber da musst Du ja den Typen der abgeleiteten Klasse kennen. Und der lässt sich eben via RTTI herausbekommen.
-
Wann kommt man in eine Situation in der man den Typen nicht kennt und wie kann man die Typinformation dann in einem dynamic_cast verwenden?
-
Wenn man z.B. eine Pluginarchitektur hat und nicht weiss, was geladen wurde. Für die Verwendung gibts ohne Ende Beispiele im Netz.
-
Man braucht es in erster Linie bei polymorphen Objekten, um den konkreten Typ zu einer gegebenen Basisklassenreferenz zu ermitteln.
ja.
aber die verbindung zu dynamic_cast sehe ich da nicht ganz, außer dass das *nur* mit typeid sicher funktioniert. wenn du nicht weißt, welche klasse geladen worden ist, wie kannst du dann typeid (in verbindung mit dynamic_cast) verwenden? für ein plugin doch wohl lieber gar nicht. vielleicht verstehe ich einfach nur nicht, worauf du hinauswillst?
-
queer_boy schrieb:
Man braucht es in erster Linie bei polymorphen Objekten, um den konkreten Typ zu einer gegebenen Basisklassenreferenz zu ermitteln.
ja.
aber die verbindung zu dynamic_cast sehe ich da nicht ganz, außer dass das *nur* mit typeid sicher funktioniert. wenn du nicht weißt, welche klasse geladen worden ist, wie kannst du dann typeid (in verbindung mit dynamic_cast) verwenden? für ein plugin doch wohl lieber gar nicht. vielleicht verstehe ich einfach nur nicht, worauf du hinauswillst?
-
ich verstehe immer noch nicht, was du meinst.
JustAnotherNoob schrieb:
Wann kommt man in eine Situation in der man den Typen nicht kennt und wie kann man die Typinformation dann in einem dynamic_cast verwenden?
die typinformation, die man von einem unbekannten typen bekommt, kann man nicht in einem
dynamic_castverwenden.
official&client=firefox-a