![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
||||
|
||||
|
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);
}
Última edición por escafandra fecha: 26-11-2009 a las 13:16:37. |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| pasar un registro de un dbedit a otro con el procedure edit | betty_loo | Conexión con bases de datos | 1 | 07-11-2007 22:51:55 |
| Referencia circular | Enan0 | Varios | 3 | 31-10-2006 22:56:26 |
| referencia circular | melon | OOP | 1 | 16-04-2006 02:13:00 |
| variables por referencia | shaktale | Varios | 2 | 11-06-2003 12:24:59 |
|