Código Delphi
[-]Si IIntHija hereda de IIntPadre, entonces la clase que implemente IIntHija debe implementar también a IIntPadre
Correcto, entonces el código que he puesto en mi mensaje inicial debería compilar correctamente (lo recopio a continuación):
Código Delphi
[-]
IIntPadre = interface
['{14CB7AD1-9CC7-4805-A6FC-9DC8FC218F6A}']
procedure dummie;
end;
IIntHija = interface (IIntPadre)
['{7D740013-C5E5-42C6-AFF0-9203A11BDDE9}']
procedure dummie2;
end;
TIntPadre=class (TAggregatedObject, IIntPadre)
public
procedure dummie;
end;
TIntHija=class (TInterfacedObject, IIntPadre, IIntHija)
private
FPadre: TIntPadre;
function getPadre: IIntPadre;
public
property Padre: IIntPadre read getPadre implements IIntPadre;
procedure dummie2;
end;
y sin embargo, no compila.
Cita:
Por otro lado, al indicar en TIntHija tanto IIntPadre como IIntHija estás duplicando cosas: Con indicar IIntHija ya es suficiente, puesto que esta ya hereda a IIntPadre.
|
Esto no es correcto, ya que si no defines explícitamente que TIntHija (o alguna de las clases de las que hereda) implementa IIntPadre, a pesar de que implemente IIntHija, cuando haces Support(miHija, IIntPadre, miPadre) te devuelve False (puede ser un bug de delphi, pero se comporta así).
Lo que estoy buscando, es alguna forma sencilla para que el código que he puesto compile.
Un saludo,
LoPiTaL