Es una boberia pero estoy seguro que a todos lo necesitamos alguna vez cuando programemos
Diganme si esto lo puiedo hacer y si no es asi diganme como puedo hacer para guardar una lista de objetos personas en un fichero. No quiero uasr struct sino objetos pero usando las clases de C++ builder
si saben como hacerlo diganme,
class CPersona
{
private:
int Edad;
public:
inline CPersona(){Edad=0;};
inline CPersona(int aedad){ Edad=aedad;};
inline int GetEdad(){return Edad;};
};
// Este es el main
CPersona *P=new CPersona(50);
CPersona *H=new CPersona(20);
CPersona *S=new CPersona(10);
CPersona *D=new CPersona(15);
CPersona *T=new CPersona();
CPersona *Arr[4]={P,H,S,D};
CPersona *Arr2[4]={T,T,T,T};
int A[]={0,0,0,0};
int a=0;
FILE *Fish;
Fish=fopen("MiFichero.txt","w+");
for(int i=0; i<4; i++)
int B=fwrite(Arr[i],sizeof(Arr[i]),1,Fish);
fclose(Fish);
Fish=fopen("MiFichero.txt","r");
int h=0;
while(h<4)
{
fread(Arr2,B,4,Fish);
h++;
}
fclose(Fish);
for(int i=0; i<4; i++)
cout<<"La edad es: "<<Arr2[i]->GetEdad()<<endl;
system("Pause");
La verdad es que no se que funcion usar para guardar objetos de una lista para un fichero, se que con struct lo puedo hacer pero no debo hacerlo con las class de C++. y no se. Diganme la forma de hacerlo.
si saben como hacerlo diganme,
class CPersona
{
private:
int Edad;
public:
inline CPersona(){Edad=0;};
inline CPersona(int aedad){ Edad=aedad;};
inline int GetEdad(){return Edad;};
};
// Este es el main
CPersona *P=new CPersona(50);
CPersona *H=new CPersona(20);
CPersona *S=new CPersona(10);
CPersona *D=new CPersona(15);
CPersona *T=new CPersona();
CPersona *Arr[4]={P,H,S,D};
CPersona *Arr2[4]={T,T,T,T};
int A[]={0,0,0,0};
int a=0;
FILE *Fish;
Fish=fopen("MiFichero.txt","w+");
for(int i=0; i<4; i++)
int B=fwrite(Arr[i],sizeof(Arr[i]),1,Fish);
fclose(Fish);
Fish=fopen("MiFichero.txt","r");
int h=0;
while(h<4)
{
fread(Arr2,B,4,Fish);
h++;
}
fclose(Fish);
for(int i=0; i<4; i++)
cout<<"La edad es: "<<Arr2[i]->GetEdad()<<endl;
system("Pause");
La verdad es que no se que funcion usar para guardar objetos de una lista para un fichero, se que con struct lo puedo hacer pero no debo hacerlo con las class de C++. y no se. Diganme la forma de hacerlo.
Hola Yuni:
En realidad, eso que pretendes no es posible. Una class guarda sus funciones miembro como punteros; así que cuando dices:
inline int GetEdad(){return Edad;}; // Ah, y saca esos ; finales
lo que está conteniendo es la dirección de memoria donde se encuentra la función del objeto en este momento. Y si guardas ese puntero hoy, seguramente esa función no va a encontrarse allí cuando lo leas mañana (!)
Aunque no es tan fácil encontrarlos, en mensajes anteriores se habla de la forma de escribir y leer datos usando la clase template fstream.
Una forma práctica es usando structs de datos; otra es guardarlos de a uno por linea, para leerlos después de la misma manera (siempre que no se trate de punteros, claro).
Alejandro
En realidad, eso que pretendes no es posible. Una class guarda sus funciones miembro como punteros; así que cuando dices:
inline int GetEdad(){return Edad;}; // Ah, y saca esos ; finales
lo que está conteniendo es la dirección de memoria donde se encuentra la función del objeto en este momento. Y si guardas ese puntero hoy, seguramente esa función no va a encontrarse allí cuando lo leas mañana (!)
Aunque no es tan fácil encontrarlos, en mensajes anteriores se habla de la forma de escribir y leer datos usando la clase template fstream.
Una forma práctica es usando structs de datos; otra es guardarlos de a uno por linea, para leerlos después de la misma manera (siempre que no se trate de punteros, claro).
Alejandro
