Supongase que tengo una interface sobre una clase y mi clase es una clase abstracta. Como hago para tener 2 funciones con el mismo nombre ya que la directiva "override" no me funciona y me causa error. En ambos casos.
Código:
type
TVisitaListaObj = function(Dato1, Dato2: Pointer): Boolean of object;
TVisitaLista = function(Dato1, Dato2: Pointer): Boolean;
//Interface de Lista
ILista = interface(IUnknown)
['GUI']
procedure Eliminar(Data: Pointer);
procedure Insertar(Data: Pointer);
function Buscar(Data: Pointer): Boolean;
function ParaCadaElemento(var ARef;
F: TVisitaListaObj): Boolean; override;
function ParaCadaElemento(var ARef;
F: TVisitaLista): Boolean; override;
end;
//Clase Abstracta de Lista
TLista = class(TInterfacedObject, ILista)
private
FFuncionComparacion: TComparacionLista;
public
constructor Create(F: TComparacionLista);
procedure Eliminar(Data: Pointer); virtual; abstract;
procedure Insertar(Data: Pointer); virtual; abstract;
function Buscar(Data: Pointer):Boolean; virtual; abstract;
function ParaCadaElemento(var ARef;
F: TVisitaListaObj): Boolean; override; virtual; abstract;
function ParaCadaElemento(var ARef;
F: TVisitaLista): Boolean; override; virtual; abstract;
end;
TListaDinamica = class(TLista)
private
FL: TPNodoLista;
function Compara(Dato: Pointer; var ARef): Boolean;
function Encuentra(Dato: Pointer; var ARef): Boolean;
public
constructor Create(F: TComparacionLista);
procedure Eliminar(Data: Pointer); override;
procedure Insertar(Data: Pointer); override;
function Buscar(Data: Pointer):Boolean; override;
function ParaCadaElemento(var ARef;
F: TVisitaListaObj): Boolean; override;
function ParaCadaElemento(var ARef;
F: TVisitaLista): Boolean; override;
end;