Generics
Original Reporter info from Mantis: BlackShark
-
Reporter name:
Original Reporter info from Mantis: BlackShark
- Reporter name:
Description:
FPCTestGenerics.lpr(19,51) Error: Identifier not found "T"
Steps to reproduce:
program FPCTestGenerics;
{$mode delphi}
type
{ TItemHolderTemplate<T> }
TItemHolderTemplate<T> = class
private
FItem: T;
public
constructor Create(AItem: T); virtual;
property Item: T read FItem;
end;
{ TItemsFactoryTemplate<T; H: TItemHolderTemplate<T>> }
TItemsFactoryTemplate<T; H: TItemHolderTemplate<T>> = class //<---FPCTestGenerics.lpr(19,51) Error: Identifier not found "T"
private
public
function CreateItemHolder(const Item: T): TItemHolderTemplate<T>;
end;
{ TItemHolderTemplate }
constructor TItemHolderTemplate<T>.Create(AItem: T);
begin
FItem := AItem;
end;
{ TItemsFactoryTemplate<T; H: TItemHolderTemplate<T>> }
function TItemsFactoryTemplate<T, H: TItemHolderTemplate<T>>.CreateItemHolder(const Item: T): TItemHolderTemplate<T>;
begin
// it feature rids us from use ".. class of .." construction which it is forbidden for generic types, furthermore it fine work in Delphi (such parameterization of generic class by other) and it is very convenient
Result := H.Create;
end;
begin
end.
Mantis conversion info:
- Mantis ID: 37017
- Version: 3.0.4