[fpc-devel] Errors using generics - what is wrong?
Žilvinas Ledas
ledas at liux.lt
Tue Oct 6 22:35:15 CEST 2009
Hello all,
I am trying to use generics but compilation fails.
Whan I try to use unit with my generic class in my real project I get
"Fatal: Internal error 200204175" error.
When I try to use it in empty Lazarus application (Unit1.pas) and I put
-----
procedure TForm1.Button1Click(Sender: TObject);
var
lst: specialize TTwoValuesList<UnicodeString>;
begin
end;
-----
I get these errors:
-----
Unit1.pas(29,17) Error: Forward declaration not solved "constructor
TTwoValuesList$UnicodeString.Create;"
Unit1.pas(30,16) Error: Forward declaration not solved "destructor
TTwoValuesList$UnicodeString.Destroy;"
Unit1.pas(32,15) Error: Forward declaration not solved
"TTwoValuesList$UnicodeString.AddString(UnicodeString,UnicodeString);"
Unit1.pas(33,14) Error: Forward declaration not solved
"TTwoValuesList$UnicodeString.GetS1(LongInt):UnicodeString;"
Unit1.pas(34,14) Error: Forward declaration not solved
"TTwoValuesList$UnicodeString.GetS2(LongInt):UnicodeString;"
Unit1.pas(35,14) Error: Forward declaration not solved
"TTwoValuesList$UnicodeString.Count:LongInt;"
Unit1.pas(36,14) Error: Forward declaration not solved
"TTwoValuesList$UnicodeString.GetS2(UnicodeString,Boolean="FALSE"):UnicodeString;"
Unit1.pas(47) Fatal: There were 7 errors compiling module, stopping
-----
my generic class is in another (not Unit1.pas) unit looks like this:
-----
type
generic TTwoValuesList<TVal> = class
type private
PTwoVal = ^TTwoVal;
TTwoval = record
FS1: TVal;
FS2: TVal;
end;
var private
FLst: TFPList;
public
constructor Create;
destructor Destroy;
procedure AddString(S1: TVal; S2: TVal);
function GetS1(i: Integer): TVal;
function GetS2(i: Integer): TVal; overload;
function Count: Integer;
function GetS2(S1: TVal; isSorted: Boolean = false): TVal; overload;
published
property Items: TFPList read FLst;
end;
-----
What am I doing wrong?
Regards,
Zilvinas Ledas
More information about the fpc-devel
mailing list