Ver Mensaje Individual
  #4  
Antiguo 21-02-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.
Responder Con Cita