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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Tableau t(taille max souhaitée);
...
t[i] = x;
etc.
Emploi d'une pile :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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