[C con Clase] Ayuda sobre estructuras, como defino un puntero?

Steven Richard Davidson stevenrichard.davidson en gmail.com
Mar Sep 18 08:19:28 CEST 2007


Hola Diego,

On 9/18/07, D1e6o! <diegogeid en gmail.com> wrote:
> Muchas gracias Steven!
> Me aclara muchas dudas como esperas, pero hay otras que me surgieron, te las
> comento.
>
> (int *) uno->obj1 = (int *) malloc( sizeof(int) );
>
> Porque necesito indicar que es un puntero con el primer int* si lo hice
> anteriormente o es optativo?
>

Porque la expresión "derecha" no tiene nada que ver con la expresión
"izquierda". Estamos ante dos valores los cuales deben tener el mismo
tipo de dato para que no haya sorpresas ni peligros.

> Y por otro lado, es necesario decirle al compilador que voy a usar uno u
> otro tipo de datos? Como son punteros, no es lo mismo no convertir tipos en
> este caso? (simplificaría mucho las cosas aunque no creo que sea posible
> pero pregunto por las dudas)
>

Ciertamente, en este caso, no es necesario hacer ambos cástings si
declaras 'obj1' como 'void *', pero quise ser explícito por si acaso.
Dejar las cosas sin tipos es peligroso. Además, dependiendo del
compilador éste puede permitir ciertas operaciones hechas con 'void *'
o no.

Por otro lado, no sé cuál tipo has decidido usar para los campos
'obj1' y 'obj2'. Si has elegido usar 'void *', entonces sí, ambos
tipos concuerdan y no tienes que hacer cástings en este caso.


Espero haber aclarado la duda.

Steven




Más información sobre la lista de distribución Cconclase