El problema está en que typedef realmente no crea nuevos tipos sino que es mas bien un alias. De esta forma como TRegistro[15] es realmente el tipo básico Registro*, el compilador no entiende cuando se trata de un miembro de una clase.
Puedes usar un truco utilizando una referencia intermedia:
Código:
class TComodin
{
public:
struct Registro
{
bool esta;
bool Dentro;
bool Frio;
};
typedef Registro TRegistro[15];
};
class TClase1
{
public:
TClase1(TComodin::TRegistro& R);
};
TClase1::TClase1(TComodin::TRegistro&)
{
}
class TClase2
{
public:
TComodin::TRegistro Reg;
TClase1 *Clas1;
void Funcion();
};
void TClase2::Funcion()
{
TClase2 C2;
// Declaro yna referencia del tipo TComodin::TRegistro a C2.Reg
// Esa referencia no es realmente una variable...
TComodin::TRegistro &Reg = C2.Reg;
Clas1 = new TClas1(Reg);
// Sin embargo esto funciona talcual, sin necesidad de ninguna referencia:
TComodin::TRegistro R;
Clas1 = new TClas1(R);
}
Saludos.