C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Passer d'un typeid à un template <typename T>

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
adebaene@club-internet.fr
Guest





PostPosted: Mon Mar 14, 2005 10:58 am    Post subject: Passer d'un typeid à un template <typename T> Reply with quote



Bonjour,

Je suis en train d'écrire un petit framework simple d'introspection de
type. Dans ce cadre, j'ai un classe PropDescriptorIterator qui, pour
simplifier, à la signature suivante:

class PropDescriptorIterator
{
public:
PropDescriptorIterator(Object* object_to_iterate_on);
PropDescriptorIterator& operator++();
PropDescriptorIterator& operator++(int);
//... autres opérateurs pour faire un itérateur

const std::type_info* GetType() const; //type de la propriété
courante

std::string GetPropName() const; //nom de la propriété courante

template <typename T> T GetValue() const; //récupère la valeur de
la propriété courante. Lève une exception si T ne correpond pas à
GetType().
};

Je vous passe les détails d'implémentation, mais l'idée est de
pouvoir itérer sur les "propriétés" d'un objet donné (en fait, des
données membres), de récupérer leur nom, leur type et leur valeur.
La liste des "propriétés" d'un type est définie dans le type en
question. Ce code fonctionne bien.

Mon problème maintenant, c'est de pouvoir écrire quelque chose du
genre:
PropDescriptorIterator it=MonObjet.begin();
while (it!=MonObjet.end())
cout<
NB : begin et end sont correctement définis dans MonObjet et renvoient
les itérateurs "bornes" de ses propriétés.

Bien entendu, ce code ne compile pas car le compilateur ne peut pas
déduire le type de it.GetValue(). J'ai bien une description du type de
ma propriété courante via it.GetType(), mais je n'arrive pas à faire
le lien avec un appel template à GetValue. Est ce que quelqu'un aurait
une idée?

La seule approche que je voie pour l'instant, c'est de rajouter une
méthode "GetValueAsString" à PropDescriptorIterator, mais ca ne me
plait pas trop.

Merci d'avance pour tout idée.

Arnaud

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.