[fpc-pascal] Generic<T> compiler error
Marcos Douglas B. Santos
md at delfire.net
Mon Oct 23 04:14:07 CEST 2017
Hi,
In Pascal we can do this:
type
TXStream = TStream;
Now, TXStream is just an alias to TStream.
How do the same with generic classes, using mode delphi?
TBar<T> = TFoo<T>;
Compile Project, Target: C:\temp\project1.exe: Exit code 1, Errors: 4
project1.lpr(25,18) Error: Identifier not found "T"
project1.lpr(25,19) Error: Type identifier expected
project1.lpr(25,20) Error: Error in type definition
project1.lpr(27,1) Error: This type cannot be a generic
My ENV is:
Lazarus 1.9.0 r56056M
FPC 3.1.1 r37505
i386-win32-win32/win64
Please, see an example below:
=== BEGIN ===
program Project1;
{$mode delphi}
uses
Classes;
type
IFoo<T> = interface
['{5CA4AEC4-3875-4639-9975-AC2C201E0A98}']
function Value: T;
end;
TFoo<T> = class(TInterfacedObject, IFoo<T>)
private
FValue: T;
public
constructor Create(Value: T);
class function New(Value: T): IFoo<T>;
function Value: T;
end;
TXStream = TStream; // <<<< OK
TBar<T> = TFoo<T>; // <<<< how solve this?
constructor TFoo<T>.Create(Value: T);
begin
inherited Create;
FValue := Value;
end;
class function TFoo<T>.New(Value: T): IFoo<T>;
begin
Result := Create(Value);
end;
function TFoo<T>.Value: T;
begin
Result := FValue;
end;
begin
Writeln(TFoo<Integer>.New(1).Value);
Readln;
end.
=== END ===
More information about the fpc-pascal
mailing list