Exercice 146
Énoncé
Créer un patron de classes nommé stack_gene, permettant de manipuler des piles dont
les éléments sont de type quelconque. Ces derniers seront conservés dans un
emplacement alloué dynamiquement et dont la dimension sera fournie au constructeur
(il ne s’agira donc pas d’un paramètre expression du patron). La classe devra
comporter les opérateurs suivants :
• <<, tel que p<
rien) ;
• >>, tel que p>>n place dans n la valeur du haut de la pile p, en la supprimant de la
pile (si la pile est vide, il ne se passera rien) ;
• ++, tel que ++p vale 1 si la pile p est pleine et 0 dans le cas contraire ;
• --, tel que --p vale 1 si la pile p est vide et 0 dans le cas contraire ;
• <<, tel que, flot étant un flot de sortie, flot << p affiche le contenu de la pile p sur
le flot sous la forme : // valeur_1 valeur_2... valeur_n //.
On supposera que les objets de type stack_gene ne seront jamais soumis à des
transmissions par valeur ou à des affectations ; on ne cherchera donc pas à surdéfinir
le constructeur par recopie ou l’opérateur d’affectation.
En fait, on peut s’inspirer de ce qui a été fait dans l’exercice 93 pour réaliser une pile
d’entiers en faisant en sorte que int soit remplacé par un paramètre de type.
Voici ce que pourrait être la définition de notre patron de classes :
#include
#include // voir N.B. du paragraphe Nouvelles possibilités
// d'entrées-sorties du chapitre 2
using namespace std ;
template class stack_gene
{ int nmax ; // nombre maximum de la valeur de la pile
int nelem ; // nombre courant de valeurs de la pile
T * adv ; // pointeur sur les valeurs
public :
stack_gene (int = 20) ; // constructeur
~stack_gene () ; // destructeur
stack_gene & operator << (T) ; // opérateur d'empilage
stack_gene & operator >> (T &) ; // opérateur de dépilage
365
Énoncé
Créer un patron de classes nommé stack_gene, permettant de manipuler des piles dont
les éléments sont de type quelconque. Ces derniers seront conservés dans un
emplacement alloué dynamiquement et dont la dimension sera fournie au constructeur
(il ne s’agira donc pas d’un paramètre expression du patron). La classe devra
comporter les opérateurs suivants :
• <<, tel que p<
• >>, tel que p>>n place dans n la valeur du haut de la pile p, en la supprimant de la
pile (si la pile est vide, il ne se passera rien) ;
• ++, tel que ++p vale 1 si la pile p est pleine et 0 dans le cas contraire ;
• --, tel que --p vale 1 si la pile p est vide et 0 dans le cas contraire ;
• <<, tel que, flot étant un flot de sortie, flot << p affiche le contenu de la pile p sur
le flot sous la forme : // valeur_1 valeur_2... valeur_n //.
On supposera que les objets de type stack_gene ne seront jamais soumis à des
transmissions par valeur ou à des affectations ; on ne cherchera donc pas à surdéfinir
le constructeur par recopie ou l’opérateur d’affectation.
En fait, on peut s’inspirer de ce qui a été fait dans l’exercice 93 pour réaliser une pile
d’entiers en faisant en sorte que int soit remplacé par un paramètre de type.
Voici ce que pourrait être la définition de notre patron de classes :
#include
#include
// d'entrées-sorties du chapitre 2
using namespace std ;
template
{ int nmax ; // nombre maximum de la valeur de la pile
int nelem ; // nombre courant de valeurs de la pile
T * adv ; // pointeur sur les valeurs
public :
stack_gene (int = 20) ; // constructeur
~stack_gene () ; // destructeur
stack_gene & operator << (T) ; // opérateur d'empilage
stack_gene & operator >> (T &) ; // opérateur de dépilage
365
