Problème avec l'opérator []
Bonjour à tous,
j'ai un petit problème pour redéfinir l'opérateur []. Je vous donne le code qui ne fonctionne pas :
Code:
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:
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:
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