E2511 Type参数'T'必须是类类型编译器错误是什么意思?

时间:2013-07-19 08:06:36

标签: delphi generics

previous question之后,我试图从其中一个答案中编译代码。

 type 
   TSearchableObjectList<T> = class(TObjectList<T>)
   end;

编译器不会编译它并报告此错误消息:

[dcc32 Error]: E2511 Type parameter 'T' must be a class type

此错误消息的含义是什么,以及我应该如何修复代码?

1 个答案:

答案 0 :(得分:11)

TObjectList<T>包含generic constraintT是一个类。类型声明如下:

type
  TObjectList<T: class> = class(TList<T>)
    ...
  end;

您可能认为约束是继承的,但事实并非如此。因此,您需要在类中包含约束。像这样指定约束:

type
  TSearchableObjectList<T: class> = class(TObjectList<T>)
    ...
  end;