[fpc-devel] [] property overloads

Ondrej Pokorny lazarus at kluug.net
Mon Jul 1 13:56:27 CEST 2019


On 20.06.2019 19:57, Ryan Joseph wrote:
> I just had some plans for a cool JSON class thwarted because apparently [] properties don’t allow overloading of the parameters. Can we allow multiple default properties as long as their parameters are different?

Properties do allow overloading of the parameters.

You only must not declare the overloaded properties but declare 
overloaded getters/setters. The compiler will silently accept them.

https://bugs.freepascal.org/view.php?id=28949

Your example:

program Project1;

{$mode objfpc}

type
   TValue = record A: Integer end;
   TMyClass = class
     function GetValue(index: integer): TValue;
     function GetValue(index: string): TValue;
     property Index[aindex: integer]: TValue read GetValue; default;
   end;

{ TMyClass }

function TMyClass.GetValue(index: integer): TValue;
begin
   Result.A := 0;
end;

function TMyClass.GetValue(index: string): TValue;
begin
   Result.A := 1;
end;

var
   c: TMyClass;
begin
   c := TMyClass.Create;
   Writeln(c[0].A);
   Writeln(c['key'].A);
end.

Best
Ondrej




More information about the fpc-devel mailing list