PDA

View Full Version : [C++] Ottenere il "nome" di una classe.


/\/\@®¢Ø
23-06-2002, 21:54
Esiste un metodo portabile per ricavarsi un valore o una stringa identificativa di una classe ? Ho provato con typeid( NomeClasse ).name() , pero' mi sembra che il valore che restituisce dipenda dal particolare compilatore...
Qualcuno ne sa qualcosa ?

cionci
24-06-2002, 10:02
Su quale compilatore l'hai provato ? Su VC++ funziona...
Ad esempio per gli int ritorna "int", mentre per string ritorna "class string"...
Purtroppo non riesco a capire se è un emtodo standard o no...boh...

misterx
24-06-2002, 16:08
sembrerebbe, uso il condizionale una procedura standard quella da te indicata; rova a vedere qui

http://www.cplusplus.com/doc/tutorial/tut5-4.html

/\/\@®¢Ø
24-06-2002, 18:46
Per funzionare funziona, il problema e' che non so se il valore restituito dal metodo name e' standard... e a vedere dagli esempi mi sembra proprio di no :(.
Icc con una classe chiamata Dummy ad esempio mi ritornerebbe "5Dummy" ( il nome della classe preceduto dalla lunghezza del nome ). E visto che il nome lo uso nella "serializzazione" di oggetti, avere una uniformita' di nomi sarebbe invece gran cosa ( anche se non indispensabile per l'uso che ne devo fare ).
Grazie comunque per le risposte :).

ilsensine
24-06-2002, 22:09
Icc con una classe chiamata Dummy ad esempio mi ritornerebbe "5Dummy" ( il nome della classe preceduto dalla lunghezza del nome ).
E' lo standard che segue il gcc, e ha una logica (è una sottostringa che compare nel nome di un metodo c++ esportato nei file object o nelle librerie).
E visto che il nome lo uso nella "serializzazione" di oggetti, avere una uniformita' di nomi sarebbe invece gran cosa ( anche se non indispensabile per l'uso che ne devo fare ).
Le fox infatti risolvono questo problema aggiungendo dei membri virtuali opportuni.