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-------------------------------
Réponse au message :
-------------------------------
> 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<int> 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<int>::Truc<int>(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