[fpc-devel] "class of TFoo".Create

Martin Frb lazarus at mfriebe.de
Sun Jul 6 13:51:21 CEST 2025


I stumbled (by accident) on (maybe) a curiosity

TFooClass = class of TFoo;
can store a class (that must be TFoo or subclass of it).

I would have expected that the type TFooClass itself is not a class. 
(Its a container for a class / for lack of better wording)

Yet
TFooClass.Create
compiles. And creates an instance of type TFoo.

Is that intentional.


program Project1;
{$mode objfpc}
type TFoo = class end;
      TFooClass = class of TFoo;
var f: TFoo;
     fc: TFooClass;
begin
   fc := TFoo;
   f  := fc.Create;
   f  := TFooClass.Create;  // works
end.



More information about the fpc-devel mailing list