El error es que estás aplicando el operador [] a un puntero no a un objeto de la clase. Cuando se aplica a un puntero funciona como un índice.
Fíjate en esta implementación:
Código:
class miClase
{
private:
int a[2];
public:
miClase() { a[0] = 1; a[1] = 2;}
int& operator[] (int i){ return a[i]; }
};
void main()
{
miClase z; // esto en C++ es perfectamente válido y muy útil.
int b = z[1];
}
o en esta como apuntó roman. Un poco mas engorrosa pero con punteros:
Código:
void main()
{
miClase *z = new miClase;
int b = (*z)[1]; // Aplicamos el operador [] a un objeto no a un puntero.
}
Tu decides según tus necesidades.
Saludos.