Exercice 129
Énoncé
On a défini le patron de classes suivant :
template class point
{ T x, y ; // coordonnees
public :
point (T abs, T ord) { x = abs ; y = ord ; }
void affiche () ;
} ;
template void point::affiche ()
{ cout << "Coordonnees : " << x << " " << y << "\n" ;
}
a. Que se passe-t-il avec ces instructions :
point p (60, 65) ;
p.affiche () ;
b. Comment faut-il modifier la définition de notre patron pour que les instructions
précédentes affichent bien :
Coordonnees : 60 65
a. On obtient l’affichage des caractères de code 60 et 65 (c’est-à-dire dans une
implémentation utilisant le code ASCII : < et A) et non les nombres 60 et 65.
b. Il faut spécialiser notre patron point pour le cas où le type T est le type char. Pour ce
faire, on peut :
soit fournir une définition complète de point, avec ses fonctions membre ;
soit, puisqu’ici seule la fonction affiche est concernée, se contenter de surdéfinir la
fonction point::affiche, ce qui conduit à cette nouvelle définition de notre
patron :
// définition generale du patron point
template class point
{
T x, y ; // coordonnees
public :
point (T abs, T ord) { x = abs ; y = ord ; }
void affiche () ;
} ;
template void point::affiche ()
{ cout << "Coordonnees : " << x << " " << y << "\n" ;
}
317
Précédent

- 318/398

Suivant