1

3番目のクラスで「E2511タイプパラメータ'T'はクラスタイプである必要があります」というメッセージが表示されます。

type TSomeClass=class
end;

ParentParentClass<T>=class 
end;

ParentClass<T: class> = class(ParentParentClass<T>)
end;

ChildClass<T: TSomeClass> = class(ParentClass<T>)
end;

任意のデータ型(ParentParentClass)のライトジェネリック配列ラッパーを作成しようとしていますが、型の識別子を解放できないため(TがTObjectの場合はTobject(T).Free)、2番目のクラスを作成しました。クラス型に便利なので、オブジェクトを解放できます。

3番目のクラスはラッパーを使用する場所ですが、コンパイラーはそのエラーをスローします。どうすればコンパイルできますか?

4

1 に答える 1

5

これは、Delphi2009のジェネリックス処理のバグです。D2010で修正されました。

于 2010-05-14T15:06:40.440 に答える