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 :
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
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(); }
Si quelqu'un pouvait m'éclairer, ce serait vraiment sympa. Je bloque la dessus, et je ne comprends pas pourquoi.
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)
Merci d'avance.
Partager