Historique des modifications - Message

Message #10440

Sujet: Aide sur les templates


Type Date Auteur Contenu
Dernière modification 08-04-2012 22:15:53 johnplayer
Voila, je voudrais implémenter une fonction du genre :
/** Illustration du principe **/
template<class T>
Data dataFromTemplate(T valeur)
{
      Data.Type = "type_de_valeur"; // sauvegarde du type de T dans un stringw
}

Bon forcément, le code au-dessus est faux. Mais j'aimerais savoir s'il est possible de "connaitre" le type de T afin de le sauvegarder dans un fichier en même temps que la variable.
Je doute que ce soit possible mais l'espoir fait vivre^^.

En espérant qu'un connaisseur en c++ passe dans le coin...

Edit : Je suis tombé sur :

#include <typeinfo>
using namespace std;
typeid(variable).name();

Mais ça me donne des noms bizarres normalement si je fais : printf( typeid(valeur).name() ); je devrais avoir clairement le type de "valeur". Pour int, j'obtiens 'i'. Pour u8, j'obtiens 'h'. Pour u16, j'obtiens 'j'. Enfin pas terrible.

Edit2 : ça y est, j'ai trouvé!!!
abi::__cxa_demangle(typeid(valeur).name() ,0,0,&status ) donne le vrai nom sans erreur.
Ouf!! J'ai cru que j'allais devoir coder une fonction par type.
Création du message 08-04-2012 21:11:07 johnplayer
Voila, je voudrais implémenter une fonction du genre :
/** Illustration du principe **/
template<class T>
Data dataFromTemplate(T valeur)
{
      Data.Type = "type_de_valeur"; // sauvegarde du type de T dans un stringw
}

Bon forcément, le code au-dessus est faux. Mais j'aimerais savoir s'il est possible de "connaitre" le type de T afin de le sauvegarder dans un fichier en même temps que la variable.
Je doute que ce soit possible mais l'espoir fait vivre^^.

En espérant qu'un connaisseur en c++ passe dans le coin...

Edit : Je suis tombé sur :

#include <typeinfo>
using namespace std;
typeid(variable).name();

Mais ça me donne des noms bizarres normalement si je fais : printf( typeid(valeur).name() ); je devrais avoir clairement le type de "valeur". Pour int, j'obtiens 'i'. Pour u8, j'obtiens 'h'. Pour u16, j'obtiens 'j'. Enfin pas terrible.

Edit2 : ça y est, j'ai trouvé!!!
abi::__cxa_demangle(typeid(valeur).name() ,0,0,&status ) donne le vrai nom sans erreur.
Ouf!! J'ai cru que j'allais devoir coder une fonction par type.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
115 invités en ligne
membre en ligne: -
RSS Feed