Bonjour à tous,
j'ai un petit problème pour redéfinir l'opérateur []. Je vous donne le code qui ne fonctionne pas :
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
 
class B
{
  public :
   B(B**);
   ...
   void getVal() const { return _valeur; }
 
  private:
   int _valeur;
   B ** _p;
};
 
B::B(A * p=0):_valeur(0), _p(p)
{
}
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
 
class A
{
  public :
   A();
   ...
   B * operator[](int i) { return tab[i]; }
 
  private :
   B* tab[81];
};
 
 
A::A()
{
   for (int i = 0; i < 81; ++i)
     tab[i] = new B(tab+i);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
...
int main()
{
  A a;
  A * pa = &a;
  cout << pa[0] << endl; // pas valide à mon avis
  cout << (*pa)[0] << endl; // valide à mon avis
 
  ...
};
J'aimerais savoir comment définir l'opérateur [] pour que pa[0] soit valide et que a[0] soit valide aussi, si cela est possible.

Edit :
Question reformulée.

Merci d'avance.

b Oo