Ver Mensaje Individual
  #6  
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
En C++ existen dos formas de crear un objeto:

1- Una es crearlo directamente declarándolo como cualquier variable. Si queremos pasarle parámetros ponemos parénteis y entonces lo que hacemos es llamar a un constructor distinto al constructor por defecto que no tiene parámetros.

2- La otra es declarar un puntero del tipo de la clase que queremos y cuando interese crearlo con un operador new y el constructor.

Podemos tener varios constructores.

Cuando usamos las VCL, por su construcción, no podemos declarar objetos directamente, sólo punteros, por lo que en tu caso sólo funcionará esto:
Código:
TClase* C2 = new TClase2(this);
si creas un nuevo constructor, y en general para cualquier clase derivada, lo debes hacer así:

Código:
class TClase: public TForm
{
.......
   public:
   // Constructores:
      __fastcall TClase(TComponent* Owner); // por defecto en la VCL
      __fastcall TClase(TComponent* Owner, TComodin::TRegistro&); // Otro...
.......

};

// Fíjate que tienes que llamar al constructor de la clase madre, en este caso TForm. Se hace con esta sintaxis:
__fastcall TClase::TClase(TComponent* Owner, TComodin::TRegistro& Reg): TForm(Owner) 
// aquí, seguido de comas podemos seguir llamando a constructores si tiene herencia múltiple
// o declarando variables o miembros: Variable1(valor1), Variable2(valor2)
{
    //codigo
}
Espero haberte aclarado algo.

Saludos.
Responder Con Cita