这就是我想要实现的目标:
program Project4;
{$APPTYPE CONSOLE}
type
TGenericClass<T> = class
public type
THandler = procedure(aParam: T);
end;
TMyClass = class(TGenericClass<TObject>)
public
procedure DoSomething(aHandler: TMyClass.THandler);
end;
procedure TMyClass.DoSomething(aHandler: TMyClass.THandler); // E2037 Declaration of 'DoSomething' differs from previous declaration
begin
// code here
end;
begin
end.
汇编失败,错误消息E2037“DoSomething”声明与之前的声明不同。这是Delphi Generics实现的限制吗?
答案 0 :(得分:3)
尝试这样做是因为THandler在通用基类上。看起来编译器正在努力弄清楚THandler的通用部分。
TMyClass = class(TGenericClass<TObject>)
public
procedure DoSomething(aHandler: TGenericClass<TObject>.THandler);
end;
procedure TMyClass.DoSomething(aHandler: TGenericClass<TObject>.THandler);
begin
// code here
end;