[fpc-pascal] Generics

Peter Vreman peter at freepascal.org
Mon Mar 31 18:03:27 CEST 2008


>>>> I would like to make a generic class, like this :
>>>>
>>>> {$mode objfpc}
>>>>
>>>> generic TMCollection<_T> = class(TObject)
>>>> private
>>>>   FDefaultItem: _T;  // line 35
>>>> public
>>>>   constructor Create;
>>>>   destructor Destroy;override;
>>>>   [...]
>>>> end;
>>>>
>>>>
>>>> But I have got the following :
>>>> commons.pas(35,21) Error: Identifier not found "_T"
>>>> commons.pas(35,21) Error: Error in type definition
>>>> commons.pas(39,34) Error: Identifier not found "_T"
>>>> commons.pas(44,84) Error: Identifier not found "_T"
>>>>
>>>> According to the documentation, I should use `var private`, but I
>>>> have got :
>>>>
>>>> Compiling ./commons.pas
>>>> commons.pas(33,3) Error: VAR and TYPE are allowed only in generics
>>>> commons.pas(35,21) Error: Identifier not found "_T"
>>>>
>>>> Could someone tell me where I am wrong ?

The forward declaration of TMCollection makes it a normal class and not 
a generic class.

Peter




More information about the fpc-pascal mailing list