Spécification d'une classe générique
En C la notion de généricité peut être simulée par l'utilisation de macros et de remplacements
symboliques (voir objets génériques en C). Le C++ possède un outil plus puissant, les templates, que l'on utilise
par l'intermédiaire du mot-clé
template.
Exemple :
template <class T>
class Pile
{
private :
T *vecteur;
int taille;
int sommet;
public :
Pile(int);
~Pile();
int vide ();
T dernier ();
void empiler (T);
void depiler ();
int getSommet ();
};
|
Implémentation d'une classe générique
template <class T>
Pile<T>::Pile (int max)
{
vecteur = new T[max];
taille = max;
sommet = -1;
}
template <class T>
Pile<T>::~Pile ()
{
delete vecteur;
}
template <class T>
void Pile<T>::empiler (T element)
{
sommet++;
vecteur[sommet] = element;
}
template <class T>
void Pile<T>::depiler ()
{
sommet--;
}
template <class T>
T Pile<T>::dernier ()
{
return (vecteur[sommet]);
}
template <class T>
int Pile<T>::vide ()
{
return (sommet == -1);
}
template <class T>
int Pile<T>::getSommet ()
{
return (sommet);
}
|
Utilisation :
void main ()
{
Pile <int> p1(5);
Pile <point> p2(10);
p1.empiler(12);
point a(3.5, 5.2);
p2.empiler(a);
Pile <point *> p3(10);
p3.empiler (new point(3.5, 5.2));
cout << p1.getSommet() << "\n";
}
|
Téléchargez l'exemple