Classe pile generique avec template
Salut a tous,j'ai un probleme avec les template ,j'ai réaliser une petite classe pile
qui marche très bien mais quand j'ai voulus la rendre generique je suis tembé dans de plusieurs erreurs.
J'ai voulues envoyer tous le projet en pièce jointe mais ça n'a pas marché,bon je l'envoie avec la balise code.
S'il vous plais compiler le et montrer moi mes erreurs.
Merci d'avance.
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
//le fichier noeud.h
#include "iostream.h"
#include "stdlib.h"
#include "time.h"
template <class T> class noeud
{
public:
noeud(T ielt=0,noeud<T>* isvt=NULL);
private:
friend class pile;
T elt;
noeud<T>* svt;
};
//le fichier pile.h
#include "noeud.h"
template <class T> class pile
{
public:
pile();
~pile();
void empiler(T);
void depiler();
void afficher();
private:
noeud<T>* tete;
};
//le fichier pile.cpp
#include "pile.h"
pile<T>::pile()
{
tete=NULL;
}
template <class T> pile<T>::~pile()
{
while(tete!=NULL)
{
depiler();
}
delete tete;
}
template <class T> void pile<T>::empiler(T val)
{
noeud<T>* n=new noeud<T>(val);
n->elt=val;
n->svt=tete;
tete=n;
}
template <class T> void pile<T>::depiler()
{
noeud<T>* p;
if(tete!=NULL)
{
p=tete;
tete=tete->svt;
}
delete p;
}
template <class T> void pile<T>::afficher()
{
if(tete==NULL)
cout<<"la pile est vide";
if(tete!=NULL)
{
noeud<T>* n=tete;
while(n!=NULL)
{
cout<<"<"<<n->elt<<"> "<<endl;
n=n->svt;
}
}
cout<<endl;
}
//le fichier noeud.cpp
#include "noeud.h"
template <class T> noeud<T>::noeud(T ielt,noeud<T>* isvt)
{
elt=ielt;
svt=isvt;
}
//le fichier main.cpp
#include "pile.h"
main()
{
pile <int> p;
p.empiler(7);
p.empiler(8);
p.empiler(9);
p.empiler(10);
p.afficher();
p.depiler();
p.depiler();
p.depiler();
p.depiler();
p.afficher();
} |