Probleme template de classe c++

Résolu
Bonjour,
j'ai crée une classe "Tableau" avec un constructeur avec et sans argument, lorsque j'appel un constructeur dans main , il m'affiche cet erreur:
[Linker error] undefined reference to `Tableau<int>::Tableau(int)' 


voila mon fichier:
#include <cstdlib>
#include <iostream>

using namespace std;

    template <class T>
    class Tableau{
          protected:
                    T *tab;
                    int dim;
          public:
                 Tableau();
                 Tableau(int);
                 void affiche();
                 
          };

template <class T>
    Tableau<T>::Tableau(){
                       dim=0;
                       tab=NULL;
                       }
    template <class T>
    Tableau<T>::Tableau(int n):dim(n){
                       tab=new T[dim];
                       }
    template <class T>
    void Tableau<T>::affiche(){
         for(int i=0;i<dim;i++){
                 cout<<tab[i]<<endl;
                 }
         }

dans main:
#include <cstdlib>
#include <iostream>
#include "tableau.h"

using namespace std;

int main(int argc, char *argv[])
{
    Tableau<int> t(2);
    system("PAUSE");
    return EXIT_SUCCESS;
}


merci pour votre aide!!

--
The best way to escape from a problem is to solve it.
Configuration: Windows XP
Safari 530.5

4 réponses

  1. ça marche!!
    donc le probleme vient du fichier .cpp ?!
    Merci
    0
    1. voila j'ai ajouté un destructeur mais toujours le meme probleme:
      #include <cstdlib>
      #include <iostream>
      
      using namespace std;
      
          template <class T>
          class Tableau{
                protected:
                          T *tab;
                          int dim;
                public:
                       Tableau();
                       Tableau(int);
                       void affiche();
                       ~Tableau();
      
                       
                };
      
      template <class T>
          Tableau<T>::Tableau(){
                             dim=0;
                             tab=NULL;
                             }
          template <class T>
          Tableau<T>::Tableau(int n):dim(n){
                             tab=new T[dim];
                             }
          template <class T>
          void Tableau<T>::affiche(){
               for(int i=0;i<dim;i++){
                       cout<<tab[i]<<endl;
                       }
               }
          template <class T>
          Tableau<T>::~Tableau(){
             delete tab;
             }


      SVP j'ai besoin de votre aide!
      0
      1. Je n'avais pas dit que le problème venait d'un 'new' sans 'delete', mais simplement qu'il était anormal d'avoir un 'new' sans 'delete'.
        As-tu essayé de tout mettre dans le même fichier ?
        0
      2. @loupiusça marche!!
        merci
        0
    2. Je suppose que 'tableau;h' est le fichier donné au dessus.
      Si c'est le cas et si c'est bien le fichier inclus, je ne vois pas d'où peut provenir cette erreur.
      Par contre il y a une 'petite' anomalie: new sans delete !
      0