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

Fra*_*anz 6 delphi generics

按照我之前的问题,我试图从其中一个答案中编译代码.

 type 
   TSearchableObjectList<T> = class(TObjectList<T>)
   end;
Run Code Online (Sandbox Code Playgroud)

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

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

这个错误消息意味着什么,我该如何修复代码?

Dav*_*nan 11

TObjectList<T>包括通用的限制T是一个类.类型声明如下:

type
  TObjectList<T: class> = class(TList<T>)
    ...
  end;
Run Code Online (Sandbox Code Playgroud)

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

type
  TSearchableObjectList<T: class> = class(TObjectList<T>)
    ...
  end;
Run Code Online (Sandbox Code Playgroud)