et ce pour chaque fonction membre de ma classe. :sad)
J'ai lu que le compilateur devait créer une instance de la classe template pour chaque type de données utilisé, p-t qu'il faut le specififer qlq part? ici apparemment il ne trouve pas ces "instances"... Je comprends plus j'y ai passé un moment je sens que c'est un truc tout bete mais comme c'est la 1ere fois que j'utilise les templates ^^
tcok
Messages postés61Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 3 août 2005 21 juil. 2003 à 12:45
je crois que pour les templates , il ne faut pas separer les declarations et l'implementation...
essaye de mettre le contenu de ton .cpp a la fin du .h, a mon avis ca marcheras ! :big)
cs_Wett
Messages postés104Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention12 juin 2005 21 juil. 2003 à 13:09
Ah bahhhhhh oui en effet ca marche du coup.... :shy)
C'est bizarre ce truc qd meme... Tu sais pourquoi il faut à tout prix ne pas separer declaration et definition?
tcok
Messages postés61Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention 3 août 2005 21 juil. 2003 à 13:10
-------------------------------
Réponse au message :
-------------------------------
>
> Ah bahhhhhh oui en effet ca marche du coup.... :shy)
> C'est bizarre ce truc qd meme... Tu sais pourquoi il faut à tout prix ne pas separer declaration et definition?
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > je crois que pour les templates , il ne faut pas separer les declarations et l'implementation...
> > essaye de mettre le contenu de ton .cpp a la fin du .h, a mon avis ca marcheras ! :big)
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Voila j'utilise VC++ 6 et j'ai créé une classe templates toute simple (en fait c une liste chainée :p), de la forme
> > >
> > > dans le .h:
> > >
> > > template <class T>
> > > class ChainList
> > > {
> > > public:
> > > ChainList();
> > > virtual ~ChainList();
> > > };
> > >
> > > et apres dans le fichier .cpp:
> > >
> > > template <class T>
> > > ChainList<T>::ChainList()
> > > {
> > > }
> > >
> > > template <class T>
> > > ChainList<T>::~ChainList()
> > > {
> > > }
> > >
> > > Bon evidemment y'a plus de fonctions mais ca servirai à rien de les mettre ici.
> > > Compilation nickel mais au link j'ai des erreurs du genre :
> > >
> > > error LNK2001: unresolved external symbol "public: __thiscall ChainList<class CImage>::ChainList<class CImage>(void)" (??0?$ChainList@VCImage@@@@QAE@XZ)
> > >
> > > et ce pour chaque fonction membre de ma classe. :sad)
> > > J'ai lu que le compilateur devait créer une instance de la classe template pour chaque type de données utilisé, p-t qu'il faut le specififer qlq part? ici apparemment il ne trouve pas ces "instances"... Je comprends plus j'y ai passé un moment je sens que c'est un truc tout bete mais comme c'est la 1ere fois que j'utilise les templates ^^
> > >
> > > Voila en esperant que qlqun pourra m'aider :)
> >
>
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 28 juil. 2004 à 19:56
faut pas les séparer pour une raison tres simple: les fonctions sont instanciées a l'execution, donc sur du code compilé il aura du mal. c'est pareil pour une classe générique ou une fonction inline