Problème avec les templates

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 12 juil. 2003 à 14:53
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 12 juil. 2003 à 15:20
J'ai un petit problème en voulant compiler ceci (avec visual C++ 6):

////////////////////////////////////
// Truc.h

template <class T>
class Truc
{
public:
Truc(int a);
};

////////////////////////////////////
// Truc.cpp

#include "Truc.h"

template <class T> Truc<T>::Truc(int a)
{
}

////////////////////////////////////
// main.cpp

#include "Truc.h"

int main()
{
Truc a(2);
return 0;
}

Et j'obtiens le message suivant:

Compiling...
Truc.cpp
main.cpp
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall Truc::Truc(int)" (??0?$Truc@H@@QAE@H@Z)
Debug/temp.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

temp.exe - 2 error(s), 0 warning(s)

Par contre en mettant la fonction main dans le fichier Truc.cpp, pas de problème. Je pense que c'est dû à l'utilisation des templates, car le même code sans template se lie normalement.
Merci de m'aider

1 réponse

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
12 juil. 2003 à 15:20
Le code d'une classe template se place dans le fichier include et non dans un fichier source.

Truc.h

template <class T>
class Truc
{
public:
Truc(int a);
};

template <class T>
Truc<T>::Truc(int a)
{
}

Kaid - kaid.fr.st
0
Rejoignez-nous