[Question] Il me semble avoir vu une erreur dans un tuto
Bonjour,
Je me suis donc tournés vers developpez.net, et j'ai commencé à lire "Apprendre le langage C++" de Henri Garreta, j'en suis au IV-B-2.
Quand j'ai vu ceci :
Exemple d'emploi d'un tableau :
Code:
1 2 3 4
| Tableau t(taille max souhaitée);
...
t[i] = x;
etc. |
Emploi d'une pile :
Code:
1 2 3 4 5 6 7
| Pile p(taille max souhaitée);
p[i] = x; // ERREUR : l'opérateur [] est inaccessible
p.empiler(x); // Oui
...
cout << t[i]; // ERREUR : l'opérateur [] est inaccessible
cout << p.depiler(); // Oui
etc. |
La définition des classes sont :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| class Tableau {
int *tab;
int maxTab;
protected:
int nbrAcces;
public:
Tableau(int t) {
nbrAcces = 0;
tab = new int[maxTab = t];
}
int &operator[](int i) {
contrôle de la valeur de i
nbrAcces++;
return tab[i];
}
};
class Pile : private Tableau {
int niveau;
public:
Pile(int t) : Tableau(t), niveau(0) { }
bool vide() {
nbrAcces++; return niveau == 0;
}
void empiler(int x) {
(*this)[niveau++] = x;
}
int depiler() {
return (*this)[--niveau];
}
}; |
Pourquoi la ligne "cout << t[i];" est incorrect alors que l'opérateur d'addition est déclaré public ?
A moins que les t[i] ne correspondent pas à la même chose dans les deux exemples différents, mais dans ce cas, d'où vient le t[i] du 2e exemple ?
Merci d'avance pour vos réponses ;)