template class PileBornee { private: T* elts; int dernier, max; public: PileBornee(int); ~PileBornee(); public: PileBornee& empiler(T); PileBornee& depiler(); T sommet(); bool est_vide(); bool est_pleine(); }; // l'implantation doit nécessairement figurer dans le // fichier .h => classe générique template PileBornee::PileBornee(int s) : elts(new T[s]), dernier(0), max(s) {}; template PileBornee::~PileBornee() { delete elts; }; template PileBornee& PileBornee::empiler(T e) { if (! est_pleine()) elts[dernier++] = e; return *this; }; template PileBornee& PileBornee::depiler() { if (dernier) dernier--; return *this; }; template T PileBornee::sommet() { if (dernier) return elts[dernier-1]; }; template bool PileBornee::est_vide() { return dernier == 0; }; template bool PileBornee::est_pleine() { return dernier == max; };