2017-04-26 8 views
1

次のコードが内部L2095エラーをスローする理由は誰にも分かりますか?キーとしての型を持つTDictionaryの宣言が内部L2095エラーをスローするのはなぜですか?

明らかに、コンパイラには、辞書のキーがクラス型であるという問題があります。

回避策はありますか?

(PS:私はTestDict := TDictTest.Create;部分を含むか、していないときにエラーがスローされていないキーは、クラス型以外のものであるとき):

TTestClass = class 
    end; 

    TTypeOfTestClass = type of TTestClass; 

    TDictTest = TDictionary<TTypeOfTestClass,Integer>; 

var 
    TestDict: TDictTest; 

implementation 

initialization 

    TestDict := TDictTest.Create; 
    TestDict.Free 

を追加しましたが答え

明らかに、これは私が本来 "class of"の代わりに "type of"を使用していたことです。 "Type of"はコンパイラによって受け入れられ、混乱します。 これに関する質問への参照:What "type of" declaration represents in Delphi and how can it be used

答えて

3

私は「タイプ...」とは考えられません。代わりに

TTypeOfTestClass = class of TTestClass; 

を使用してください。

+0

私は確かに "クラスの"を使用する必要があります!私はコードの他の部分でやっていますが、何らかの理由で今回は "タイプ"を使用しましたが、それは奇妙なことにコンパイルします。それはTDictionary宣言を除いてどこでも受け入れられるようです。奇妙なしかし、ありがとう! – Domus

関連する問題