> On Feb 17, 2021, at 6:10 AM, Sven Barth <pascaldra...@googlemail.com> wrote:
> 
> Simply because no one has come around to implement it yet. The class type 
> case is more complicated than the interface case. (Same would be true for 
> record and objects)
> So, yes, we'll need to implement this first which would finally bring FPC up 
> to Delphi compatibility regarding interface delegation. 

So "class type method resolution" is what's missing? I never used the interface 
method resolution so I don't really understand this feature. What needs to 
happen as far as the compiler is concerned?

What if you want to implement virtual methods in a base class? This is kind of 
the core of "composition over inheritance" so it needs to be handled via method 
resolution I assume.

========================


(*
 * Shape
 *)

type
  TShape = class
    protected
      procedure Draw; virtual; abstract;
  end;

(*
 * Circle
 *)

type
  ICircle = interface
    procedure Draw;
  end;

type
  TCircle = class(ICircle)
    procedure Draw;
  end;

(*
 * My Shape
 *)

type
  TMyShape = class(TShape, ICircle)
    private
      m_circle: TCircle;
    protected
      procedure ICircle.Draw = Draw;
    public
      property circle: TCircle read m_circle implements ICircle;
  end;

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to