Cita: Entiendo que "reinterpret_cast sirve para hacer un cambio de tipo, sin embargo, no alcanzo a ver que se cambia en esta linea de codigo ya que solo veo a un objeto "Pepe".
El objeto pepe es de tipo "tipoRegistro" y la función write espera recibir un apuntador de tipo char, lo que hace reinterpret_cast<char *>(&pepe) es convertir el apuntador de tipo tipoRegistro, que sería "&pepe", a un apuntador tipo char "reinterpret_cast<char *>".
Por ejemplo si se tuviera el siguiente código:
Código:
char *s;
s=new char[25];
strcpy(s, "Hola Mundo!");
fsalida.write(s, 25);
delete[] s;
no necesito hacer conversión de apuntadores ya que la variable "s" es en sí misma un apuntador a char, y eso es lo que necesita la función.
Cita: Y en general agradeceria si explicaran que hace la linea de codigo, especificamente lo que esta dentro del parentesis.
reinterpret_cast<char *>(&pepe) ya lo he explicado, sizeof(tipoRegistro) lo que hace es obtener el tamaño en bytes del objeto tipoRegistro, que en este caso está declarado como:
struct tipoRegistro {
char nombre[32];
int edad;
float altura;
};
y debe ocupar aproximadamente unos 40 bytes (en un sistema de 32bits), lo que hará la función finalmente es escribir en el archivo los datos contenidos en la variable pepe (reinterpret_cast<char *>(&pepe)) y para ello necesita conocer el tamaño de lo que se va a escribir (sizeof(tipoRegistro)).