Si me permitís,
NEG1414 fíjate en este fragmento de tu código:
Código:
TDatos::TArchivo *TDatos::LeoDatos()
{
TArchivo A;
for(int i=0;i<100;i++)
{
A.ListaRegistros[12].Primero = true;
A.ListaRegistros[12].Segundo = false;
A.ListaRegistros[12].Num = 0;
}
return &A;
}
Creas una variable local, la modificas y devuelves un puntero a la misma. Al salir de la función esa variable deja de existir, luego el puntero devuelto apunta a un valor inválido.
Creo que lo que pretendes es que la variable A sea de la clase y no de la función, en cuyo caso declarala como miembro de la clase TDatos. En oreo caso incorporalá como parámetro de la función LeoDatos().
Con estos cambios que te pongo debajo, funciona como creo que quieres:
Código:
class TDatos
{
private:
struct ERegistro
{
bool Primero;
bool Segundo;
unsigned short Num;
};
typedef ERegistro TRegistro;
struct SArchivo
{
char Nom[16];
TRegistro ListaRegistros[100];
} Archivo; // DECLARO VARIABLE Archivo
typedef SArchivo TArchivo;
public:
typedef SArchivo TArch;
//Constructores
TDatos();
TArchivo *LeoDatos();
};
Código:
TDatos::TArchivo *TDatos::LeoDatos()
{
for(int i=0;i<100;i++)
{
Archivo.ListaRegistros[12].Primero = true;
Archivo.ListaRegistros[12].Segundo = false;
Archivo.ListaRegistros[12].Num = 0;
}
return &Archivo;
}
Permíteme un consejo, clarifica un poco la estructura de tu código y no abuses de
typedef
Saludos.