Ver Mensaje Individual
  #4  
Antiguo 26-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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.

Última edición por escafandra fecha: 26-11-2009 a las 13:16:37.
Responder Con Cita