2017-04-26 1 views
1

아무도 왜 다음 코드가 내부 L2095 오류를 throw하는지 알 수 있습니까?타입이 키 인 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

관련 문제