Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Liste de classes template [ Divers / Divers ] (Rouliann)

samedi 7 juin 2008 à 15:16:12 | Liste de classes template

Rouliann

Membre Club
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<int> 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.

Merci.


samedi 7 juin 2008 à 16:21:19 | Re : Liste de classes template

luhtor

Réponse acceptée !
class propertyBase
{
...
}

template <typename T> class property : public propertyBase
{
        string name;
        T value;
 				
        public:
        property();
        /* ... */
}
struct maillon{
        propertyBase *p;                // sans spécifier le type
        struct maillon *next;
};
typedef struct maillon *liste;

dimanche 8 juin 2008 à 11:10:52 | Re : Liste de classes template

Rouliann

Membre Club
Et donc là, pour créer un nouvel objet je fais
propertyBase *p;
p = new property<le-type-que-je-veux>;

c'est correct ?

En tout cas merci beaucoup j'avais pas pensé à ça!



dimanche 8 juin 2008 à 13:04:42 | Re : Liste de classes template

luhtor

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:

class propertyBase
{
string name;
...
public:

virtual bool SetValue(const string &) = 0;
virtual string GetValue() = 0;
}

template <typename T> class property : public propertyBase
{
        T value;
...

virtual bool SetValue(const string & _chaine)
{
std::istringstream iss(_chaine);

return ((iss >> value) && (iss.eof());
}

virtual string GetValue()
{
std::ostringstream oss(value);

return oss.str();
}
}
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.

dimanche 8 juin 2008 à 15:16:24 | Re : Liste de classes template

Rouliann

Membre Club
Oui c'est à peu près ça ;-)

Encore merci, parce-que je bloquais depuis plusieurs jours sur ce problème.





Cette discussion est classé dans : type, liste, property, struct, maillon


Répondre à ce message

Sujets en rapport avec ce message

créer une liste à partir d'un arbre [ par morganistic ] bonjour a tous!voila deux structures : une liste et un arbre.je n arrive pas a parcourir un arbre en inserant chaque noeud de l arbre dans une liste.. Liste chainéés [ par anek971 ] Bonjour a tousEnfaite il y a déà eu un poste sur le site sur ce sujet mais ayant le mm tp a faire je me suis rendu compte ke sa fonction quitter ne ma liste chainée: type file d'attente [ par cunbreizh ] MAIDER! MAIDER!Votre texte ICIVotre texte ICIdébutant dans la prog en C. Je cherche à programmer de la manière la plus simple et basic possible une st [c] erreur malloc (incompatible types in assignment) [ par Diony ] voici mon programme : #include #include #include typedef struct recette { char * nom; struct ingredient * ing; classe et pointeur [ par anduril22 ] Salut j'ai un petit souci, (erreur de compilation) j'ai une classe qui se compose comme ceci :Dans mon fichier test.h***********************typedef st Templates [ par ymerej ] Bonjour à tous,ce TP est à rendre pour demain donc j'espere avoir une réponse ce soir.Le sujet du TP C++ est simple, ecrire 2 classes : liste et maill probleme de pointeur et de liste chainée [ par krater ] sur un projet de video-club nous avons utilise une liste double chainées cepedant, nous avons quelque récurent à la compillation si une reponse pouvai Problème socket [ par bouba ] Voila, j'ai un problème d'envoi de structure. (Sous UNIX)J'ai une structure comme cellle-ci.struct SPDU_TYPE{ char SI; int LI; struct PARAM_TYPE PARAM Passage par adresse d'un tableau de structures. [ par alekine ] Bonjour, j'ai un problème pour passer par adresse un tableau de structures. Voilà mon code:#include #define L_MAX 2struct point //la structure d'un p correction d'1 programme sur les listes chaînées [ par cococinnelle ] Voilà une fonction qui répond à la question suivante:Ecrire une fonction squeeze qui prend en arguments deux listes d'entiers vues en cours (ne les re


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.