¿Qué problema hay en esta línea de código C++?
Publicado por BluSky (10 intervenciones) el 04/07/2005 13:36:02
Este código funciona perfectamente para grabar en un fichero objetos de la clase Persona
do {
cout << "Nombre:"; cin >> Nom;
cout << "Edad:"; cin >> Ed;
Persona P(Nom, Ed);
Fichero.write(( unsigned char *) &P, sizeof P);
cout << endl << "Mas registros?";
cin >> Respuesta;
} while (Respuesta=='s');
Pero este NO:
Persona *P;
do {
cout << "Nombre:"; cin >> Nom;
cout << "Edad:"; cin >> Ed;
P=new Persona(Nom, Ed);
Fichero.write(( unsigned char *) P, sizeof P);
cout << endl << "Mas registros?";
cin >> Respuesta;
} while (Respuesta=='s');
La única diferencia entre ambos es que el objeto a grabar (P) en el primer caso es una variable y en el segundo un puntero. Por lo que interpreto que el error debe estar en la llamada a "write". Si pongo &P graba cosas rarísimas y si pongo P me guarda solo los nombres...
¿Veis qué fallo puede tener este último código?
do {
cout << "Nombre:"; cin >> Nom;
cout << "Edad:"; cin >> Ed;
Persona P(Nom, Ed);
Fichero.write(( unsigned char *) &P, sizeof P);
cout << endl << "Mas registros?";
cin >> Respuesta;
} while (Respuesta=='s');
Pero este NO:
Persona *P;
do {
cout << "Nombre:"; cin >> Nom;
cout << "Edad:"; cin >> Ed;
P=new Persona(Nom, Ed);
Fichero.write(( unsigned char *) P, sizeof P);
cout << endl << "Mas registros?";
cin >> Respuesta;
} while (Respuesta=='s');
La única diferencia entre ambos es que el objeto a grabar (P) en el primer caso es una variable y en el segundo un puntero. Por lo que interpreto que el error debe estar en la llamada a "write". Si pongo &P graba cosas rarísimas y si pongo P me guarda solo los nombres...
¿Veis qué fallo puede tener este último código?
Valora esta pregunta


0