Veréis, tengo el siguiente código que nos ha dejado el profesor:
/*
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:
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
Si, es un casting, convierte tamTabla y tamCubeta en un char*
Saludos.
Y para que me podría servir convertir un unsigned int en un char*?
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
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!