salut tout le monde
je suis débutant en c++, et je veux créer une classe template :
voila mon code :
Vecteur.h
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
26
27
28
29
30
31
32
33
34 #ifndef VECTEUR #define VECTEUR template<class T> class Vecteur { private : T *m_table; int m_taille; public : //constructeur par defaut : Vecteur():m_table(NULL),m_taille(0){ } //constructeurs avec parametres : Vecteur(T *table,int taille):m_taille(taille){ m_table=new T[taille]; for(int i=0;i<taille;i++) { m_table[i]=table[i]; } } //destructeur : ~Vecteur(); void Vecteur::affiche(){ for(int i=0;i<this->m_taille;i++) { std::cout<<m_table[i]<<" "; } } }; #endif
un petit erreur qui s'affiche :
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 #include <iostream> #include"Vecteur.h" using namespace std; int main() { int *table=new int[10]; for(int i=0;i<10;i++) { table[i]=i+1; } Vecteur <int>h(table,10); h.affiche(); return 0; }
templateclasse\main.cpp|16|undefined reference to `Vecteur<int>::~Vecteur()'|
et si vous pouvez me dire comment je peux sépare la déclaration et l'implémentation en deux fichiers .h et .cpp parce que lorsque je crée deux fichiers .h et .cpp le compilateur me génère des erreurs a cause de l'utilisation des templates .
merci d'avance.
Partager