salut tout le monde
je suis débutant en c++, et je veux créer une classe template :
voila mon code :
Vecteur.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
 
#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
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
 
#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;
}
un petit erreur qui s'affiche :
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.