probleme avec les templates
Salut les amis!:P
j'ai un problème de compilation sous code::Blocks ,il me génère l'erreur suivante au niveau du main:
undefined reference to 'liste <int>::liste(int)'
mon code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
//fichier liste.h
#ifndef LISTE_H_INCLUDED
#define LISTE_H_INCLUDED
template <class T>
class liste{
protected://prevoir un heritage;sinon la classe fille n'a pas acces aux membres,donnees prives de la classe mere
int taille;
int NbrElements;//contient le nbre actuel d'elements que contient la liste
int courant;//indique la position de l'element courant
T *adr;
public:
liste(int);
liste(liste &f);
~liste ();
void saisie();
void affiche();
liste &oppose();
};
#endif // LISTE_H_INCLUDED |
Code:
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
|
//fichier liste.cpp
#include "liste.h"
#include <iostream.h>
template <class T> liste<T>::liste(int n=20){
taille=n;
adr=new T[taille];
NbrElements=0;
courant=0;
cout<<"constructiom d'un objet liste dont @ "<<this<<"\n";
cout<<"adresse du pointeur adr de liste "<<adr<<"\n";
}
template <class T> liste<T>::liste(liste &f){
cout<<"constructeur par recopie";
taille=f.taille;
adr=new T[taille];
for(int i=0;i < taille;i++){
adr[i]=f.adr[i];//construction par recopie
}
}
template <class T> liste<T>:: ~liste()
{
delete adr;
cout<<"destruction de l'objet liste dont @ "<<this<<"\n";
cout<<"adresse de liste"<<adr<<"\n";
}
template <class T> void liste<T>::saisie(){
for(int i=0;i<taille;i++){
cout<<"entrer un nombre dans la liste \n";
cin>>*(adr+i);
}
cout<<"la liste contient les nombres suivants:";
for(int i=0;i<taille;i++)
{
cout<<"le nombre d'@ "<<adr+i<<" est egal a "<<*(adr+i);
}
}
template <class T> liste &liste liste<T> :: oppose()
{
//LE RETOUR PAR REFERENCE SINON L'OBJET LOCAL CREE EST DETRUIT AVANT D'ETRE UTILISE
static liste res(taille);
cout<<"construction de la liste opposee \n";
for(int i=0;i< taille;i++)
{
res.adr[i]=-adr[i];
cout<<"\n la valeur de i dans la boucle for de construction "<<i;
}
for(int i=0;i<taille;i++)
{
cout<<"\n le contenu des listes opposées: "<<*(adr+i)<<" "<<*(res.adr +i)<<"\n";
}
return res;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11
|
//fichier main
#include "liste.h"
#include <iostream>
using namespace std;
int main()
{
liste<int> a(2);
return 0;
} |
je ne sais pas d'ou vient le probleme!:roll:
Merci d'avance les amis!