[fpc-devel] inheritance of interfaces.

Martin Frb lazarus at mfriebe.de
Mon Feb 2 17:25:02 CET 2026


If I have the below code, I can pass an object that has I1 (TFoo if 
uncommented) to the test function

I can also pass an inherited interface. "x1: i2"

But I can not pass a call that only has the inherited interface?
  Error: Class "TFoo" does not implement interface "I1"

Is that intended?

Since TFoo implement I2, it does also implement I1.



program Project1;
{$Mode objfpc}
{$Interfaces CORBA}

type
   I1 = interface
     function Get1: byte;
   end;

   I2 = interface(I1)
     function Get2: byte;
   end;

   TFoo = class(TObject, I2)
   //TFoo = class(TObject, I2, I1)
     function Get1: byte; virtual; abstract;
     function Get2: byte; virtual; abstract;
   end;

   procedure test(a: I1);
   begin
   end;

var
x1: i2;
x2: TFoo;
begin
   test(x1);
   test(x2);
end.



More information about the fpc-devel mailing list