6

前の質問に続いて、そこにある回答の 1 つからコードをコンパイルしようとしています。

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

コンパイラはこれをコンパイルせず、次のエラー メッセージを報告します。

[dcc32 エラー]: E2511 型パラメータ 'T' はクラス型でなければなりません

このエラー メッセージは何を意味し、どのようにコードを修正すればよいですか?

4

1 に答える 1

11

TObjectList<T>クラスである一般的な制約が含まれています。T型宣言は次のとおりです。

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

制約は継承されていると思うかもしれませんが、そうではありません。そのため、クラスに制約を含める必要があります。次のように制約を指定します。

type
  TSearchableObjectList<T: class> = class(TObjectList<T>)
    ...
  end;
于 2013-07-19T08:09:39.953 に答える