• Domingo 22 de Diciembre de 2024, 19:11

Autor Tema:  Copiar Clases  (Leído 1488 veces)

falcatin

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Copiar Clases
« en: Jueves 19 de Octubre de 2006, 14:47 »
0
pong un ejemplo para que se vea mejor

class datos
{
    int precio;
   datos();
}
   

class prueba
{
    datos d;
    prueba(datos d)
    {
          this.d=d;
     }
}


creo una variable class datos da;
creo una variable class prueba pr;
da.precio=10;
prueba pr=new prueba(da);

Si yo hago ahora pr.d.precio=7; me modificaria da.precio, pero yo no kiero k me modifique "da"!

Que solución tendría??? si kiero conseguir de da no se modifique.

el problema esta en que "this.d=d" me crea una copia de la clase por lo k cualquier cosa k haga se kedará grabado en da también, no se puede hacer nada?  :(

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Copiar Clases
« Respuesta #1 en: Jueves 19 de Octubre de 2006, 15:08 »
0
lo que pasa es que en esa asignacion estas asignando  a "d" el objeto a que referencia "da".
Deberias hacer:
Código: Text
  1.  
  2. class prueba
  3. {
  4. datos d;
  5. prueba(datos dd)
  6. {
  7.    d = new datos();
  8.    this.d.precio=dd.precio;
  9. }
  10. }
  11.  
  12.  

falcatin

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Copiar Clases
« Respuesta #2 en: Jueves 19 de Octubre de 2006, 16:57 »
0
OK,gracias, aunque ya me lo imaginaba, igualar todos los parámetros entre las dos clases, ("this.d.precio=dd.precio;" )uno por uno ,eso si lo sabía, el problema es que no es sólo un parámetro, precio, sino que son unos cuantos más con más clases como parámetro.

No hay otra solución más elegante???

Si quiero tener una variable datos d en prueba para poder llamarla en cualquier momento dentro de la clase prueba.

Datos d;
d.precio=7;
Prueba p=Prueba(d);
p.precio=10;

como puedo hacer para que cuando salga d.precio siga valiendo 7??????????  :(  :(





class datos
{
 int precio;
 datos();
}


class prueba
{
  datos d;
  prueba(datos d)
  {
     this.d=d;
  }
}

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Copiar Clases
« Respuesta #3 en: Sábado 21 de Octubre de 2006, 18:28 »
0
busca informacion sobre constructores de copia.
http://msdn2.microsoft.com/en-us/library/ms173116.aspx

falcatin

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Copiar Clases
« Respuesta #4 en: Domingo 22 de Octubre de 2006, 15:51 »
0
ok,muchas gracias Enko,  :kicking:   lo he estado viendo, es la solución que tu distes primera pero pasandole la clase, la verdad que más elegante si que es, y viendolo un poquito más es la úncia solución que he encontrado, es un poco tedioso ir copiando parámetro a parámetro y más si uno de esos parámetros es una clase que tendrías que hacer otra vez lo mismo para esa clase.