begin process at 2012 02 08 10:31:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

Liste de classes template


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Liste de classes template

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ée 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.. les liste chainée [ par korimatsu ] bonjour a tous je voulé juste savoir une chose si j'écris mon maillon de cette façon typedef struct maillon {int v; struct maillon *suiv; }maillo Envoyer struct type via winsock [ par TNDFR ] slt,j'essay d'envoye struct type via winsock (chat programme)le struct comprend les info sur une personne connecter:struct PERSON {int age; int ss;int Fichier + liste chainée [ par Evisu ] Bonsoir,J'ai une question concernant l'écriture et la lecture de liste chainée dans un fichier.dataJ'ai une structure PERS qui contient des infos (nom fonctions de listes chainees en c [ par loftiteau ] bonjourje souhaite avoir d'aide pour faire des fonctions d'ajout et suppression et modification en utilisant la liste chainé suivante en language c :s Trier une liste chainée [ par ango973 ] Bonjour,J'ai un probleme avec une fonction qui doit me trier une liste chainée selon le nom mais apres le passage dans ma fonction la liste reste iden probleme forcage de type en c [ par angebrune8 ] Bonjour, j'ai un petit soucis . En fait j'ai une fonction generique de type : void inserer(struct A,void * elem){} et j'ai une fonction qui fait appel erreur [ par nomadstorm ] Bonjour j'ai besoin d'aide pour corriger cet erreur,j'aime savoir sa signification In instantiation of `std::iterator_traits': instantiated from he tableau de type struct contenant des points [ par zeom ] salut , comment faire un algorithme qui détermine l'ensemble de successeurs d'un ensemble des sommets donner dans un tableau de type struct et le déco Struct avec fonctions [ par Tybrenn ] Je suis débutant en c++. J'essaie de faire un prog. qui permet de maintenir l'inventaire d'un cellier. J'utilise une struct contenant l'info de chaque


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales