Klassenname ausgeben



  • Hallo Leute,
    durch welche Anweisung/Funktion kann man in der Klasse den Klassentyp (den Klassennamen?) auf die Konsole ausgeben ?

    M.f.G.



  • zum beispiel so:

    #include <iostream>
    #include <typeinfo>
    #include <string>
    using namespace std;
    
    int main()
    	{
    	string s("string");
    	const type_info &ti=typeid(&s);
    
    	cout<<s<<":\n"<<ti.name()<<'\n'<<ti.raw_name()<<endl;
    	cin.get();
    
    	return 0;
    	};
    


  • Wobei vielleicht noch wichtig ist, das an type_info::name() vom Standard nahezu keine Anforderungen gestellt werden, insbesondere nicht, das ein menschenverständlicher Text zurückgegeben wird, der irgendwie erkennbar den Typ (und damit z.B. den Klassennamen) beschreibt. Das hat dazu geführt, das die verschiedenen Compiler vierschiedenste Ergebnisse für ein und die selbe Klasse liefern. Sogar zwischen Compiler-Versionen hat sich dies schon öfter geändert. Es ist vom Standard nichtmal sichergestellt, das die Zeichenkette eindeutig ist (zum vergleichen von Typen hat man ja den type_info::operator==).

    type_info::raw_name() ist zudem eine Microsoft-Erweiterung, sprich unter anderen Compilern oder Plattformen eher nicht anzutreffen und kommt im Standard nicht vor.


Log in to reply