Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   redefinir métodos virtuales (https://www.clubdelphi.com/foros/showthread.php?t=76744)

waremovil 24-11-2011 15:44:38

redefinir métodos virtuales
 
Tengo una clase virtual con una serie de métodos, por ej:
class padre{
...
virtual void __fastcall metodoA(int param1) = 0;
...
}
Y en una clase descendente quiero redefinir la misma función:
class hijo{
...
virtual void __fastcall metodoA(miTipo param1);
...
}


Cbuilder no me deja redefinir, si hago esto me dice que no puedo instanciar la clase hija. ¿No existe nada en cbuilder para redefinir métodos? me parece que en delphi se llama override

gracias!

un saludo

ecfisa 24-11-2011 23:07:40

Hola.

Probá de este modo:
Código:

class TBase {  // clase abstracta (tiene al menos una función virtual pura)
public:
  virtual void __fastcall Funcion(int Param) = 0;  // pure virtual
};

class TDerivada: public TBase {  // derivada de Base
public:
  void __fastcall Funcion(float Param) {
    ShowMessage(FloatToStr(Param * 2));
  };
};

/* llamada de ejemplo */
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 TDerivada *D;
 D->Funcion(3.141592654);
}

Si TDerivada no proporciona una definición del método Funcion, se convertirá en una función pure virtual de la clase TDerivada.
Por otro lado, si llamás a una función virtual pura directa o indirectamente te va a provocar un error de ejecución.

Un saludo.


La franja horaria es GMT +2. Ahora son las 16:19:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi