begin process at 2012 05 29 08:27:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Erreur de link en utilisant les templates


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

Erreur de link en utilisant les templates

lundi 21 juillet 2003 à 12:29:29 | Erreur de link en utilisant les templates

Wett

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.
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
lundi 21 juillet 2003 à 12:45:24 | Re : Erreur de link en utilisant les templates

tcok

Membre Club
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 !



-------------------------------
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.
> 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
lundi 21 juillet 2003 à 13:09:09 | Re : Erreur de link en utilisant les templates

Wett


Ah bahhhhhh oui en effet ca marche du coup....
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 !
>
>
>
> -------------------------------
> 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.
> > 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
>
lundi 21 juillet 2003 à 13:10:32 | Re : Erreur de link en utilisant les templates

tcok

Membre Club




-------------------------------
Réponse au message :
-------------------------------

>
> Ah bahhhhhh oui en effet ca marche du coup....
> 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 !
> >
> >
> >
> > -------------------------------
> > 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.
> > > 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
> >
>
lundi 21 juillet 2003 à 13:12:23 | Re : Erreur de link en utilisant les templates

tcok

Membre Club
Non g aucune idee ! mais bon le principal c que ca marche !


-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > Ah bahhhhhh oui en effet ca marche du coup....
> > 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 !
> > >
> > >
> > >
> > > -------------------------------
> > > 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.
> > > > 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
> > >
> >
>
mercredi 28 juillet 2004 à 19:56:26 | Re : Erreur de link en utilisant les templates

leprov

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


Cette discussion est classée dans : classe, template, link, templates, chainlist


Répondre à ce message

Sujets en rapport avec ce message

template [ par ifren ] salutje veux utilise une classe D utilisant une variable qui peut etre double ou string, je deirve de cette dernier deux autre class Dnum et Dstrpour template dll ou autre??? [ par Bilock ] Bonjour,j'aimerai créer un programme chargeant des dll de traitement audio temps réel.J'aimerai que ces dll contiennent une classe que je puisse insta fonction templates amies [ par littlefl ] Ma question peu paraître simple (et peut-être qu'elle l'est) mais je n'arrive pas à déclarer une fonction template amie d'une classe. La raison, c'ets classe derivee de template [ par payen ] Salut a tous,juste une petite question sur les template et les classes derivees ... j'ai donc une classe template declarre comme suit: template et héritage [ par cybermax62 ] j'ai un problème de fond dans ma conception. Je voudrais utiliser une classe template de base Singleton avec des classes héritées (plusieurs fois). Le pb d'importation d'une classe template à partir d'une DLL avec Visual Studio .NET [ par Diabolus ] Salut,J'ai un problème d'importation à partir d'une DLL.Je souhaite importer une classe qui est de type template dans mon application.J'ai réussi à im template? [ par payen ] Salut a tous,je programme actuellement une bibli de traitement d'images en C++, et j'ai un p'tit souci. En fait, j'ai cree une classe image qui contie Class derivée , Template ( POURQUOI ES-CE CI DIFFICILE) ??? [ par nawakator ] J'ai déjà posé cette question, mais je la repose car elle est essentiel pour mon projet!J'ai créer un template permettant de géré une liste chainé de Singleton et héritage [ par Dany82 ] Voila mon probleme:J'utilise le template:template class singleton{protected: // Constructor/Destructor singleton( ) { } // Supprime l instance de la c Unresolved external symbol [ par neodelphi ] Bonsoir, c'est encore moi et mes problèmes de c++ !Je vais essayer de faire cour:J'ai une classe template dans un fichier .hpp (déclaration & code). C


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,811 sec (3)

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