我想实现一个泛型类TB,它继承自另一个泛型类TA,如下所示
base = class(Tobject)
public
procedure test1( x : integer ); virtual;
end;
generic TA<T>= class (base )
public
procedure test1( x : T ); overload;
end;
generic TB< T, Y >= class (TA<T>)
public
procedure test1( addParameter1 : T ; addParameter2 : Y ); overload;
end;
但它不起作用!知道如何做到这一点。
答案 0 :(得分:1)
您走在正确的轨道上,但是您无法使用通用参数定义您的Base类而不使其成为通用参数(过程test1的参数类型为&#34; T&#34;其中未知此上下文 - 编辑:代码已被更改 - 请参阅编辑修订版)。一个类必须是100%自包含的,并且必须能够在不依赖任何后代类的情况下进行语法分析和构造。
因此,您必须使Base成为泛型类,或者您必须从中删除T类型的依赖。
除了你的代码应该编译,如果你删除&#34; generic&#34;单词,因为Delphi中没有这样的关键字,并在整个代码片段前加上&#34; Type&#34;。