Problema con varias lineas de código [C++]

Iniciado por Don Pollo, 15 Junio 2011, 11:41 AM

0 Miembros y 1 Visitante están viendo este tema.

Don Pollo

Veréis, tengo el siguiente código que nos ha dejado el profesor:

Código (c++) [Seleccionar]
/*

Si el fichero es nuevo, le metemos los datos para la tabla, y la cubeta que nos dicen.

Reservamos memoria para la cubeta.

*/

void ficheroDisperso::crear(string& url, unsigned int tamTabla, unsigned int tamCubeta)

{

if(this->fDisp.is_open())

this->fDisp.close();

if(this->cub.datos == NULL)

delete[] this->cub.datos;



this->fDisp.open(url.c_str(), ios::in | ios::out | ios::binary | ios::trunc);



if(!this->fDisp.is_open())

throw excepciones::fichNoAbierto();



this->tamTabla=tamTabla;

this->tamCubeta=tamCubeta;

cub.datos = new Pueblo[this->tamCubeta];



this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));



for (unsigned int i=0; i <tamTabla; ++i)

{

this->fDisp.write(reinterpret_cast<char *>(&cub.tam), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(cub.datos), sizeof(Pueblo)*tamCubeta);

}

}


Pero no entiendo las líneas que ponen esto:

Código (c++) [Seleccionar]
this->fDisp.write(reinterpret_cast<char *>(&this->tamTabla), sizeof(unsigned int));

this->fDisp.write(reinterpret_cast<char *>(&this->tamCubeta), sizeof(unsigned int));


Podrían decirme cuál es su finalidad? Si no creo mal, podría ser algo de un casting?

Gracias de antemano!  ;D

El_Java

Si, es un casting, convierte tamTabla y tamCubeta en un char*
Saludos.

Don Pollo

Y para que me podría servir convertir un unsigned int en un char*?

fantasma306

puede ser por que fDisp es un archivo y lo estas tratando como si fuese binario ?!...
para escribir en un archivo binario, los datos se escriben como si fuesen char*

saludos
Es mejor callar y que piensen que eres idiota a hablar y demostrarlo.

Don Pollo

Como habéis podido leer, ando algo verde aún con lo del manejo de archivos y tal  :-\

Pero bueno, ya me habéis solucionado la duda, muchas gracias a los dos!