SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: lalo_soft en Viernes 29 de Junio de 2007, 20:56

Título: Puntero A Objetos
Publicado por: lalo_soft en Viernes 29 de Junio de 2007, 20:56
Mi pregunta es la siguiente:


La funcion Main tiene la instancia de un objeto como un miembro local, existe otra funcion que tiene que ocupar el mismo Obj, como paso un puntero de ese obj a esta funcion sin que este sea por copia , sino por referencia. <_<
Título: Re: Puntero A Objetos
Publicado por: LeGatoRojo en Viernes 29 de Junio de 2007, 22:57
??, creo que no entendi.
Título: Re: Puntero A Objetos
Publicado por: lalo_soft en Sábado 30 de Junio de 2007, 00:12
Ejemplo


void MiFuncion(obj MiObj_2)
{

 //bla..bla...

}

int main()
{
  obj MiObj_1 // instancio la clase obj y se crea MiObj_1

  MiFuncion(MiObj_1);


 return 0;
}


Esta forma de pasar objs en funciones void MiFuncion(obj MiObj_2)lo que en realidad hace es crear una copia total de obj duplicando los mismos recursos del objeto fuente, mi pregunta si existe alguna forma de solo pasarle el puntero del obj fuente a la funcion sin que tenga  que ocupar memoria duplicando el ojb fuente osea
pasar el ojb por referencia y no por valor.
Título: Re: Puntero A Objetos
Publicado por: Geo en Sábado 30 de Junio de 2007, 00:45
Lo pasas como si de cualquier otro tipo de variable se tratara. Ahora, quien dice qué tipo de variable va a recibir es la función, en ella indicas si el parámetro es por valor o por referencia (o un puntero).
Código: Text
  1.  
  2. #include &#60;iostream&#62;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. class Objeto {
  7.   public:
  8.     void setValor( int val ) { valor = val; }
  9.     int getValor() { return valor; }
  10.   private:
  11.     int valor;
  12. };
  13.  
  14. void actualizaObjeto( Objeto& );
  15.  
  16. int main() {
  17.   Objeto miObjeto;
  18.   miObjeto.setValor( 5 );
  19.   cout &#60;&#60; miObjeto.getValor() &#60;&#60; endl;
  20.   actualizaObjeto( miObjeto );
  21.   cout &#60;&#60; miObjeto.getValor() &#60;&#60; endl;
  22.   system( &#34;pause&#34; );
  23.   return 0;
  24. }
  25.  
  26. void actualizaObjeto( Objeto& obj ) {
  27.   obj.setValor( 10 );
  28. }
  29.  
Título: Re: Puntero A Objetos
Publicado por: lalo_soft en Sábado 30 de Junio de 2007, 01:43
Gracias Geo ,ahora siiiii :D  :D  :D