[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