007
13.03.2008, 14:05 Uhr
0xdeadbeef
Gott (Operator)
|
Es gibt im Header typeinfo ein paar entsprechende Funktionen. Die machen zwar nicht genau das, was du willst (die Details sind implementierungsspezifisch), aber zumindest etwas in der Art. Beachte dabei, dass für polymorphische Typen eine virtuelle Funktionstabelle gegeben sein muss (Das ist prinzipiell schon dadurch gegeben, dass polymorphische Typen einen virtuellen Destruktor haben müssen, aber noch mal zur Erinnerung). Zum Beispiel:
C++: |
#include <typeinfo> #include <iostream>
struct A { virtual ~A() { } }; struct B : A { };
struct C { }; struct D : C { };
int main() { B b; A &a = b;
D d; C &c = d;
std::cout << typeid(a).name() << std::endl << typeid(b).name() << std::endl << typeid(c).name() << std::endl << typeid(d).name() << std::endl; }
|
Gibt mit g++ 4.2.3 folgendes aus:
Was type_info::name() genau zurückgibt, ist, wie gesagt, implementierungsspezifisch, bezeichnet den Typ aber eindeutig. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 13.03.2008 um 14:05 Uhr von 0xdeadbeef editiert. |