Thanks for that, now it compiles but it doesn't work, i.e. I added a pair and value and then used trygetdata and it can't find it. So perhaps I'm missing something else :

program test;
{$mode objfpc}
{$modeswitch advancedrecords}
uses
  fgl;

type
   pair = record
      x, y : integer;
      class operator > (a,b: pair) r:boolean;
      class operator < (a,b: pair) r:boolean;
   end;

class operator pair.< (a,b: pair) r:boolean;
begin
   if a.x < a.y then
      r := true
   else
      r := false;
end;

class operator pair.> (a,b: pair) r:boolean;
begin
   if a.x > a.y then
      r := true
   else
      r := false;
end;

function cmp(const a,b : pair) : LongInt;
begin
   if a < b then
      cmp := -1
   else
      if a > b then
         cmp := 1
      else
         cmp := 0;
end;

type
  TMyDict = specialize TFPGMap<pair, integer>;
var
  Dict: TMyDict;
  key: pair;
  Value: Integer;
  flg: boolean;
begin
   Dict := TMyDict.Create;
   Dict.OnKeyCompare := @cmp;
   key.x := 2;
   key.y := 4;
   Dict.Add(key, 99);
   flg := Dict.trygetdata(key, Value);
   writeln(flg);
   writeln(Value);
   Dict.Free;
end.

On 1/24/24 12:34PM, Luca Olivetti via fpc-pascal wrote:
El 24/1/24 a les 20:31, ppadilcdx via fpc-pascal ha escrit:
Trying to use the fgl unit, specifically the TFPGMap.   Below is a simple program I'm trying to compile; it gives me two errors:

fgl.pp(1582,18) Error: Operator is not overloaded: "pair" < "pair"
fgl.pp(1584,23) Error: Operator is not overloaded: "pair" > "pair"



add a {$Modeswitch advancedrecords} and use class operators

program test;
{$mode objfpc}
  {$modeswitch advancedrecords}

uses
   fgl;

type
    pair = record
       x, y : integer;
        class operator < (a,b:pair):boolean;
        class operator > (a,b:pair):boolean;
    end;



operator < (a,b: pair) r:boolean;

   class operator pair.<(a,b:pair):boolean;

begin
    if a.x < a.y then
       r := true
         result:=true
    else
       r := false;
         result:=false;
end;

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

Reply via email to