Rouliann
Messages postés115Date d'inscriptionsamedi 20 décembre 2003StatutMembreDernière intervention23 août 2008
-
7 juin 2008 à 15:16
Rouliann
Messages postés115Date d'inscriptionsamedi 20 décembre 2003StatutMembreDernière intervention23 août 2008
-
8 juin 2008 à 15:16
Bonjour à tous.
Mon problème est le suivant :
J'ai une classe que je définis comme ceci
template <typename T> class property{
string name;
T value;
public:
property();
/* ... */
}
et je voudrais faire une liste chainée d'objets de type property, mais dans laquelle chaque maillon pourrait etre de type différent (par exemple property ou property<string> ), du genre :
struct maillon{
property *p; // sans spécifier le type
struct maillon *next;
};
typedef struct maillon *liste;
Est-ce possible ?? si oui comment ?
Je l'avais déjà fait en C avec des pointeurs génériques à la place des templates mais j'aimerais savoir si c'est possible autrement.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 8 juin 2008 à 13:04
Oui c'est correct, mais bien évidemment, tu ne connais pas le type dans la liste chainée, puisque tu n'as que des pointeurs de la classe de base. Mais tu n'as pas besoin de connaitre le type pour ce que tu veux faire (enfin ce que tu sembles vouloir faire).
Mais les définitions suivantes sont surement plus correctes dans ton cas:
Le champ "string name" est commun à toutes les propriétés, donc autant le placer dans la classe de base.
Bien sur la fonction "SetValue" et "GetValue" ne sont que exemple de ce que tu pourrais avoir.