[Lazarus] "global" operator overloading
Sven Barth
pascaldragon at googlemail.com
Tue Feb 26 15:36:56 CET 2013
On 26.02.2013 15:30, Xiangrong Fang wrote:
> Hi Sven,
>
> My code below:
>
> ===============================================
> program project1;
> {$mode objfpc}{$H+}
> {$MODESWITCH advancedrecords}
>
> uses Classes;
> type
> TMyStringList = record
> StringList: TStringList;
> class operator <(s1, s2: TMyStringList): Boolean;
> end;
>
> class operator TMyStringList.<(s1, s2: TMyStringList): Boolean;
> begin
> Result := s1.StringList.Count < s2.StringList.Count;
> end;
>
> begin
> end.
> ===============================================
>
> generated these errors:
>
> project1.lpr(9,20) Error: It is not possible to overload this operator.
> Related overloadable operators (if any) are:
> project1.lpr(9,21) Error: It is not possible to overload this operator.
> Related overloadable operators (if any) are:
> project1.lpr(9,53) Error: Impossible operator overload
> project1.lpr(12,31) Error: method identifier expected
> project1.lpr(1,1) Fatal: Compilation aborted
>
> I am using Lazarus 1.0.6/FPC2.6.0-6 on Linux Mint 14/x86_64.
In addition to my previous mail: It will work in 2.6.0 if you compile in
mode delphi (no $H+ and $modeswitch needed there) and you need to rename
the operator from "<" to "LessThan" (this is the Delphi operator name).
Regards,
Sven
More information about the Lazarus
mailing list