Bonjour,

je suis confronté à un problème assez ennuyant. Cela fait maintenant + de 4h que je cherche d'où vient ce problème, mais rien !

Voici mon code :

CVecteurTemplate.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
 
#ifndef __CVECTEUR_H__
#define __CVECTEUR_H__
 
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
template <class XTYPE>
struct noeud
{
	XTYPE valeur;
	noeud<XTYPE> *pSuiv;
	noeud(XTYPE n, noeud<XTYPE> *s):valeur(n),pSuiv(s) {};
};
 
 
template <class XTYPE> class CVecteurIter;
 
template <class XTYPE> 
class CVecteur
{
	private:
		noeud<XTYPE> *v_pVec;
 
	public:
		CVecteur():v_pVec(0) {};
		~CVecteur(void);
 
		char empty(void) { return v_pVec ? 0:1; }
		XTYPE head(void) { return v_pVec->valeur; }
		void insert(XTYPE n);
		void display(void);
		void removeAll(void);
 
		friend class CVecteurIter<XTYPE>;
 
};
 
template<class XTYPE>
class CVecteurIter
{
	private:
		CVecteur<XTYPE>& v_vec;
		noeud<XTYPE> *v_pCur;
 
	public:
		CVecteurIter(CVecteur<XTYPE>& v):v_vec(v),v_pCur(v.v_pVec) {};
		int end() { return v_pCur == 0; }
		void reset () { v_pCur = v_vec.v_pVec; }
 
		char operator ++ ()
		{
			if(v_pCur)
			{
				v_pCur = v_pCur->pSuiv;
				return 1;
			}
			else 
				return 0;
		}
 
		char operator ++ (int) { return operator ++ (); }
		operator XTYPE() const { return v_pCur->valeur; }
		XTYPE& operator& (void) { return v_pCur->valeur; }
 
};
 
 
#endif

CVecteurTemplate.cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
#include "CVecteurTemplate.h"
 
template <class XTYPE>
CVecteur<XTYPE>::~CVecteur()
{
	noeud<XTYPE> *pCur, *pPrec;
	pCur = v_pVec;
	while(pCur != NULL)
	{
		pPrec = pCur;
		pCur = pCur->pSuiv;
		delete pPrec;
	}
}
 
template <class XTYPE>
void CVecteur<XTYPE>::insert(XTYPE n)
{
	v_pVec = new noeud<XTYPE> (n,v_pVec);
}
 
template <class XTYPE>
void CVecteur<XTYPE>::display()
{
	CVecteurIter<XTYPE> it(*this);
 
	cout<<"(";
	while(!it.end())
	{
		XTYPE t( (XTYPE)it );
		cout<<t<<", ";
		it++;
	}
 
	cout<<"\x8\x8)"<<endl;
}
 
template <class XTYPE>
void CVecteur<XTYPE>::removeAll()
{
	noeud<XTYPE> *pCur, *pPrec;
	pCur = m_pVec;
 
	while(pCur != NULL)
	{
		pPrec = pCur;
		pCur = pCur->pSuiv;
		delete pPrec
	}
 
	v_pVec = pCur;
}

et dans mon main.cpp, j'instancie cette classe CVecteur.

main.cpp :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
 
#include "CVecteurTemplate.h"
 
void main()
{
 
	// Création de la liste d'entiers
	/////////////////////////////////
 
	CVecteur<int> listint;
 
	listint.insert(1);
 
	getchar();	
 
	listint.display();
 
	getchar();
 
}
Dans un premier temps, j'aimerais utiliser des INT à l'intérieur de ce vecteur. Mais voici les erreurs qu'il me sort lorsque j'instancie ma classe et que j'utilise les méthodes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Linking...
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CVecteur<int>::~CVecteur<int>(void)" (??1?$CVecteur@H@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall CVecteur<int>::display(void)" (?display@?$CVecteur@H@@QAEXXZ)
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall CVecteur<int>::insert(int)" (?insert@?$CVecteur@H@@QAEXH@Z)
Si quelqu'un pouvait m'éclairer, ce serait vraiment sympa. Je bloque la dessus, et je ne comprends pas pourquoi.

Merci d'avance.