Carlos Pantelides, el 23 de noviembre a las 07:51 me escribiste:
> Estimados/as:
> 
> 
> Tengo:
> 
> class Clase {
> public:
>    Clase(OtraClase & otroObjeto):otroObjeto(otroObjeto) {}
>    OtraClase & otroObjeto;
> };
> 
> class SubClase:public Clase {
>    SubClase(OtraClase & otroObjeto):Clase(otroObjeto) {}
> };
> 
> 
> Quiero un objeto SubClase de Clase:
> 
> SubClase objeto(&otroObjeto);

Acá me perdí. &otroObjeto, sea lo que sea otroObjeto te va a devolver un
puntero a algo, lo que sin dudas no es un OtraClase&. Esto es un error de
tipeo nomás? Voy a asumir que sí en el resto del mail.

> y para que no haya slicing uso un puntero:
> 
> SubClase * objeto = new Clase(&otroObjeto);

Esto está roto! Una Clase no es una SubClase. Tal vez te está andando de
casualidad (aunque dudo que compile sin un cast bruto) porque SubClase no
tiene ningún miembro que Clase no tenga, pero si lo tuviera y quisieras
accederlo, estarías al borde de un segmentation fault.

> pero como no quiero preocuparme por destruirlo, quiero una referencia:
> 
> SubClase objeto(&otroObjeto); 

Esto no es una referencia. Es un objeto.

> De un modo u otro parece que necesita al constructor Clase().

No debería necesitarlo. Estás creando un objeto en el stack de tipo
SubClase, a ,emps que otroObjeto no sea una instancia de OtraClase.

> Si lo declaro chilla porque no inicializa "otroObjeto".
> 
> Parece que tengo dos problemas: uno con la inicialización de
> "otroObjeto", otro con la solución del slicing, que me parece que se
> soluciona tanto con el puntero como con la referencia.
> 
> Tenga alguna alma caritativa guiarme fuera de mi confusión.

Yo creo que tenés serios problemas conceptuales. De todas las líneas de
código que tiraste ninguna parece tener sentido. Tal vez es sólo que
tiraste líneas de código desparramadas (por ejemplo nunca decís que es
"otroObjeto"), si postearas un ejemplo completo tal vez...

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
El techo de mi cuarto lleno de cometas
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a