Re: question on docs
Martin Frb via fpc-pascal <[email protected]>
| Newsgroups | gmane.comp.compilers.free-pascal.general |
|---|---|
| Message-ID | <[email protected]> |
The compare function is declared right inside the class
{ TFPGList }
generic TFPGList<T> = class(TFPSList)
private
type
TCompareFunc = function(const Item1, Item2: T): Integer;
"T" is from the generic, so if you specialized with string, then T is
string.
It is a function, not a method (i.e. not part of a class)
On 21/10/2024 00:17, ppadilcdx--- via fpc-pascal wrote:
> Just tried to compile a short program with that definition of compare: TCompareFunc, and that is the wrong type for TFPGList<String> in my program (yes there is a better class for strings but I just wanted a quick example program to compile). FPC error message says it wants:
> function(const ShortString;const ShortString):LongInt,
> so only two non-pointer input parameters. Must be another definition somewhere.
>> type TFPSListCompareFunc = function(
>> Key1: Pointer;
>> Key2: Pointer
>> ):Integer of object;
>>
>> Two questions.
>> 1) Should TCompareFunc in TFPGList.Sort be one of the above types, or is there another definition somewhere?
>> 2) What is an “Integer of object” in TFPSListCompareFunc? (I expect it to be a typo but then I’m fairly new to free pascal so I might have missed the memo.)
>>
>>
Of object belongs to the function (the entire function declaration
before), not just the "integer".
So that function must be a method of a class.
_______________________________________________
fpc-pascal maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal