Voila j'ai un main.cpp tout ce qu'il y a de plus simple :
Code :
- #include <iostream.h>
- #include "Element.h"
- int main(){
- Element<int> e1(3);
- return 0;
- }
|
je fais la classe élément en séparant .h et .cpp, ca plante lors de l'édition de lien(quand je fais "build" sous visual C++) :
fichier : Element.h
Code :
- template<class T>
- class Element{
- public:
- T valeur;
- Element<T>* ptr_succ;
- Element<T>* ptr_pred;
- Element(T val, Element<T>* succ = NULL, Element<T>* pred = NULL);
- virtual ~Element();
- };
|
fichier : Element.cpp
Code :
- template<class T> Element<T>::~Element(){
- delete ptr_succ;
- delete ptr_pred;
- }
- template<class T>
- Element<T>::Element(T val, Element<T>* succ, Element<T>* pred):valeur(val),ptr_succ(succ),ptr_pred(pred){};
|
En revanche si j'inclue le main dans le .cpp ca marche et je comprend pas pourquoi?
Message d'erreur :
Linking...
main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Element<int>::~Element<int>(void)" (??1?$Element@H@@UAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall Element<int>::Element<int>(int,class Element<int> *,class Element<int> *)" (??0?$Element@H@@QAE@HPAV0@0@Z)
Debug/TP05_Ensemble.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.