前の質問に続いて、そこにある回答の 1 つからコードをコンパイルしようとしています。
type
TSearchableObjectList<T> = class(TObjectList<T>)
end;
コンパイラはこれをコンパイルせず、次のエラー メッセージを報告します。
[dcc32 エラー]: E2511 型パラメータ 'T' はクラス型でなければなりません
このエラー メッセージは何を意味し、どのようにコードを修正すればよいですか?
TObjectList<T>
クラスである一般的な制約が含まれています。T
型宣言は次のとおりです。
type
TObjectList<T: class> = class(TList<T>)
...
end;
制約は継承されていると思うかもしれませんが、そうではありません。そのため、クラスに制約を含める必要があります。次のように制約を指定します。
type
TSearchableObjectList<T: class> = class(TObjectList<T>)
...
end;