It fails because the operators < and > are not defined for TObject, which is assumed by TFPGMap<TKey, TValue>.KeyCompare().
As a makeshift you can implement a record type to wrap TObject and define these operators for it. See the attached file for an example. Hope it helps. On April 26, at 16:45, ZHANG Dao-yuan wrote: >> program moi; >> {$mode objfpc} >> uses fgl; >> type >> tSI= specialize tFpGMap<integer, tObject>; >> // tIS= specialize tFpGMap<tObject, integer>; >> begin >> end. > > Hi, > I'm trying to use template in fpc 2.6.0. I can map class type as value > as above code can be compiled. But if I uncomment the declaration of tIS > -- map class type as key, fpc fail to compile and print out these error > msgs: > > Error: Operator is not overloaded: "TObject" < "TObject" > Error: Operator is not overloaded: "TObject" > "TObject" > t.pas(10) Fatal: There were 2 errors compiling module, stopping > Fatal: Compilation aborted > Error: /usr/bin/ppcx64 returned an error exitcode (normal if you did not > specify a source file to be compiled) > > Any way to resolve it? > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal -- Best Regards, JC Chu
{$MODE DELPHI} uses Fgl; type TObjectRec = record Value: TObject; class operator LessThan(lhs, rhs: TObjectRec): Boolean; class operator GreaterThan(lhs, rhs: TObjectRec): Boolean; class operator Implicit(obj: TObject): TObjectRec; class operator Implicit(rec: TObjectRec): TObject; end; TTest = TFPGMap<TObjectRec, Integer>; class operator TObjectRec.LessThan(lhs, rhs: TObjectRec): Boolean; begin Exit(NativeInt(lhs) < NativeInt(rhs)); end; class operator TObjectRec.GreaterThan(lhs, rhs: TObjectRec): Boolean; begin Exit(NativeInt(lhs) > NativeInt(rhs)); end; class operator TObjectRec.Implicit(obj: TObject): TObjectRec; begin Result.Value := obj; end; class operator TObjectRec.Implicit(rec: TObjectRec): TObject; begin Exit(rec.Value); end; begin end.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal