在previous question之后,我试图从其中一个答案中编译代码。
type
TSearchableObjectList<T> = class(TObjectList<T>)
end;
编译器不会编译它并报告此错误消息:
[dcc32 Error]: E2511 Type parameter 'T' must be a class type
此错误消息的含义是什么,以及我应该如何修复代码?
答案 0 :(得分:11)
TObjectList<T>
包含generic constraint,T
是一个类。类型声明如下:
type
TObjectList<T: class> = class(TList<T>)
...
end;
您可能认为约束是继承的,但事实并非如此。因此,您需要在类中包含约束。像这样指定约束:
type
TSearchableObjectList<T: class> = class(TObjectList<T>)
...
end;