Solution de l’exercice 7.4

Il suffit d’écrire :

class liste {     element *tab, *courant;     int nombre;     public :     // ... autres méthodes ...     friend element operator [](liste& l, int i);     };			element operator[](liste& l, int i  = 0);// donne le i-ième élément de la liste après courant{     if (!courant) return 0;     element *anccourant = l.courant;     l.avance(i);     element e = courant->contenu;     courant = anccourant;     return e;}

Si l’on n’avait pas pu accéder à la déclaration des classes, il aurait fallu utiliser la méthode valeur devenue indispensable pour accéder au contenu de la liste :

element operator[](liste& l, int i  = 0);// donne le i-ième élément de la liste après  courant{     l.avance(i);     element e = l.valeur();     l.recule(i);     return e;}

Cet opérateur est correct avec les deux versions de la liste, puisque celles-ci ont le même comportement extérieur, comme on l’a indiqué au chapitre 6.


Retour au texte.