[C con Clase] Otra duda
Salvador Pozo Coronado
salvador en conclase.net
Jue Mar 13 19:06:03 CET 2014
Estimado Miguel,
Bueno, veo varios problemas, no sólo en el constructor copia de XXX,
sino también en el constructor a partir de machin.
En la clase machin, uno de los miembros es una referencia constante a
un objeto de la clase X.
Las referencias no se pueden dejar sin asignar, de modo que es
obligatorio declarar un constructor para machin que inicialice
esa referencia con un valor válido. Por poner un ejemplo:
machin(const X& x): refX(x), b() {}
No existe un constructor para machin que use como parámetro una
referencia constante a un objeto machin. El que he definido en antes
usa una referencia a X, y es el único contructor.
Además, igual que con machin, debemos inicializar todas las
referencias que existan, en este caso, refmachin. Una opción sería
esta:
XXX(machin const & p):z(p.getX()),refmachin(p) { cout<< z.getb();} // pas de problème
El el otro constructor de XXX pasa lo mismo, necesitamos inicializar
obligatoriamente todas las referencias, y este es el mensaje de error
que recibes "referencia no inicializada".
Como también hay que inicializar z, de la clase machin, y esa clase no
tiene constructor copia, tendremos que usar el constructor disponible:
XXX(XXX const &xxx) : z(xxx.z.getX()), refmachin(xxx.refmachin) { cout<<z.getb();}
En definitiva, no sé qué errores son producto del ejemplo, pero el
error que comentas es por no inicializar las referencias.
Recuerda que siempre es obligatorio inicializar las referencias.
Hasta pronto.
--
Saludos,
Salvador mailto:salvador en conclase.net
Con Clase: http://www.conclase.net
Blog con Clase: http://blogconclase.wordpress.com
Más información sobre la lista de distribución Cconclase