Buenas..
LLevo varios dias intentando encontrar el porque de un error (el valor de una variable varia al inicializar una clase sin razon aparente).... y me es imposible ... He reducido a la minima expresion el codigo y que siga dando el problema para hacerlo mas comprensible.
Cita:
Class TClase1
{
private :
TStringList *Lista;
public :
TClase1();
{
Lista = new TStringList;
}
}
Class TClase2 (#Include "Clase1.h")
{
private:
TClase1 ClaseHija;
public:
TClase2()
{
struct ffblk ffblk; //Obiamente en el programa original se lee un archivo en esta version reducida solo incluyo esta linea
suficiente para hacer saltar el error
}
}
class TDatos
{
private:
struct SRegistro
{
bool a;
bool b;
unsigned short Num;
};
typedef SRegistro TRegistro
struct SArchivo
{
char Nombre [16];
TRegistro ListaRegistros [100];
};
typedef SArchivo TArchivo;
public:
typedef SArchivo TArch;
TDatos()
{
}
TDatos::Archivo *TDatos::LeerDatos()
{
TDatos A;
A.ListaRegistro[12].a = true
A.ListaRegistro[12].b = false;
A.ListaRegistro[12].Num = 0;
return &A
}
PROGRAMA PRINCIPAL
#Include Clase2
#Include Datos
......
.....
TDatos *BDatos = new TDatos();
TDatos::TArch LeLosDatos;
LeLosDatos = BDatos->LeerDatos();
TClase2 *ClaseSegunda = new TClase2()
|
Una vez Leidos, los datos obtenidos son los correctos
LeLosDatos.ListaRegistro[12].a = true
LeLosDatos.ListaRegistro[12].b = false;
LeLosDatos.ListaRegistro[12].Num = 0;
El problema surge cuando inicializo ClaseSegunda.. los Valores de LeLosDatos se modifican sin razon aparente.
He comprobado que:
- Si Elimino de Clase 1 el
TStringList *Lista NO DA ERROR
- Si elimino de Clase1 en el Constructor
struct ffblk ffblk NO DA ERROR
- Si en la estructura struct
SArchivo de Tclase2 sustituyo
TRegistro ListaRegistros [100];
por
TRegistro ListaRegistros; NO DA ERROR
Supongo que es error al declarar punteros o estructuras que solapan posiciones de memoria pero no lo veo NECESITO AYUDA..
Gracias
}