• Domingo 22 de Diciembre de 2024, 10:57

Autor Tema:  Puntero A Objetos  (Leído 1509 veces)

lalo_soft

  • Miembro MUY activo
  • ***
  • Mensajes: 469
    • Ver Perfil
Puntero A Objetos
« en: Viernes 29 de Junio de 2007, 20:56 »
0
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. <_<

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Puntero A Objetos
« Respuesta #1 en: Viernes 29 de Junio de 2007, 22:57 »
0
??, creo que no entendi.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

lalo_soft

  • Miembro MUY activo
  • ***
  • Mensajes: 469
    • Ver Perfil
Re: Puntero A Objetos
« Respuesta #2 en: Sábado 30 de Junio de 2007, 00:12 »
0
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.

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Puntero A Objetos
« Respuesta #3 en: Sábado 30 de Junio de 2007, 00:45 »
0
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 <iostream>
  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 << miObjeto.getValor() << endl;
  20.   actualizaObjeto( miObjeto );
  21.   cout << miObjeto.getValor() << endl;
  22.   system( "pause" );
  23.   return 0;
  24. }
  25.  
  26. void actualizaObjeto( Objeto& obj ) {
  27.   obj.setValor( 10 );
  28. }
  29.  
La imaginación es el límite.
Hardware & Software | Mexchip

lalo_soft

  • Miembro MUY activo
  • ***
  • Mensajes: 469
    • Ver Perfil
Re: Puntero A Objetos
« Respuesta #4 en: Sábado 30 de Junio de 2007, 01:43 »
0
Gracias Geo ,ahora siiiii :D  :D  :D