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 :
Emploi d'une pile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Tableau t(taille max souhaitée); ... t[i] = x; etc.
La définition des classes sont :
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.
Pourquoi la ligne "cout << t[i];" est incorrect alors que l'opérateur d'addition est déclaré public ?
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]; } };
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
Partager