// (attention T &)
int operator ++ () ; // opérateur de test pile pleine
int operator -- () ; // opérateur de test pile vide
// opérateur << pour flot de sortie
friend ostream & operator << (ostream &, stack_gene &) ;
} ;
template stack_gene::stack_gene (int n)
{ nmax = n ;
adv = new T [nmax] ;
nelem = 0 ;
}
template stack_gene::~stack_gene ()
{ delete adv ;
}
template stack_gene & stack_gene::operator << (T n)
{ if (nelem < nmax) adv[nelem++] = n ;
return (*this) ;
}
template stack_gene & stack_gene::operator >> (T & n)
{ if (nelem > 0) n = adv[--nelem] ;
return (*this) ;
}
template int stack_gene::operator ++ ()
{ return (nelem == nmax) ;
}
template int stack_gene::operator -- ()
{ return (nelem == 0) ;
}
template ostream & operator << (ostream & sortie, stack_gene & p)
{ sortie << "// " ;
int i ;
for (i=0 ; i sortie << "//" ;
return sortie ;
}
À titre indicatif, voici un petit programme d’utilisation de notre patron de classes (dont
on suppose que la définition figure dans stackg.h). Il est accompagné du résultat fourni
par son exécution.
/************ programme d'essai de stack_gene *********/
#include "stackg.h"
#include // voir N.B. du paragraphe Nouvelles possibilités
// d'entrées-sorties du chapitre 2
using namespace std ;
main()
{ stack_gene pi(20) ; // pile de 20 entiers maxi
cout << "pi pleine : " << ++pi << " vide : " << --pi << "\n" ;
pi << 2 << 3 << 12 ;
cout << "pi = " << pi << "\n" ;
stack_gene pf(10) ; // pile de 10 flottants maxi
pf << 3.5 << 4.25 << 2 ; // 2 sera converti en float
cout << "pf = " << pf << "\n" ;
float x ; pf >> x ;
cout << "haut de la pile pf = " << x ;
cout << "pf = " << pf << "\n" ;
}
pi pleine : 0 vide : 1
pi = // 2 3 12 //
366
Précédent

- 367/398

Suivant