2013-07-19 13 views
6

私のprevious questionに続いて、そこの答えの1つからコードをコンパイルしようとしています。E2511型パラメータ 'T'はクラス型コンパイラエラーの意味である必要がありますか?

 
[dcc32 Error]: E2511 Type parameter 'T' must be a class type 
このエラーメッセージはどういう意味

、そしてどのように私は、コードを修正する必要があります。

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

コンパイラは、このエラーメッセージは、このとレポートをコンパイルしないのだろうか?

+2

元の質問にコメントを追加してみませんか?私はそれを修正する答えを編集しました –

+4

@SirRufoそれは良い提案です。とにかく、私は質問を編集してより一般的にし、タイトルを編集してエラーメッセージを追加しました。これにより、より検索可能になるはずです。私の答えを編集してくれてありがとう。 –

答えて

11

TObjectList<T>は、generic constraintを含み、Tはクラスである。型宣言は次のとおりです。

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

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

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

今コンパイルはOKです、ありがとう!!!! – Franz

関連する問題