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.