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 === _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal