[C con Clase] Referencias a objetos

Salvador Pozo salvador en conclase.net
Lun Dic 11 16:29:20 CET 2006


El pasado 2006-12-11 13:04:52, Rey escribió:
 
R> Hola amigos de la lista

Hola:

R>  
R> //  *** DEFINICION DE MI CLASE CPATIO *** //
R> class cPatio {
R>   private:
R>     float mArea;
R>     cPerro *MisPerros;
R>     cGato *MisGatos;
R>  
R>   public:
R>   ...
R>     cPerro &Get_Perro(int i)
R>     {
R>       return *(MisPerros[i]);
R>     }
R>     cGato &Get_Gato(int i)
R>     {
R>       return *(MisGatos[i]);
R>     }
R> };
R> ...
R> Esta es la definición de mi clase cpatio. Estoy intentando devolver la referencia a los objetos cPerro, y cGato que son miembros de mi clase cPatio, pero me marca errores, tanto si uso:
R> return *(MisPerros[i]);
R> como si uso:
R> return *MisPerros[i];

El problema no está en la forma de escribir la expresión de retorno, sino en el tipo de esa expresión.

Has declarado MisPerros como un puntero a un objeto de tipo cPerro, y ese puntero lo usas para crear un array dinámico.

Por otra parte, la función Get_Perro devuelve una referencia a un objeto cPerro.

No entiendo por qué intentas devolver un puntero a cPerro, cuando lo que tienes que devolver es una referencia. No hace falta usar ningún operador para eso, ya que cada elemento del array es un objeto cPerro, bastará con retornar uno de esos objetos:

    cPerro &Get_Perro(int i) 
    { 
      return MisPerros[i];
    } 

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase