Quelqu'un sait-il pourquoi le code suivant génère une erreur interne L2095?Pourquoi la déclaration d'un TDictionary avec un type comme clé déclenche-t-elle une erreur interne L2095?
Apparemment, le compilateur a un problème avec la clé du dictionnaire étant un type de classe.
Quelqu'un sait-il qu'il existe une solution de rechange?
(PS: l'erreur n'est pas jeté quand je ne comprends pas la partie TestDict := TDictTest.Create;
ou lorsque la clé est autre chose qu'un type de classe)
TTestClass = class
end;
TTypeOfTestClass = type of TTestClass;
TDictTest = TDictionary<TTypeOfTestClass,Integer>;
var
TestDict: TDictTest;
implementation
initialization
TestDict := TDictTest.Create;
TestDict.Free
Ajouté après la réponse:
Apparemment, il s'agit de moi ayant instinctivement utilisé "type of
" au lieu de "class of
". "Type of
" est accepté par le compilateur, d'où la confusion. Une référence à une question à ce sujet: What "type of" declaration represents in Delphi and how can it be used
J'aurais dû utiliser "class of"! Je fais dans d'autres parties de mon code, mais pour une raison quelconque, j'ai utilisé "type de" cette fois et il compile, assez étrangement. Il semble être accepté partout sauf dans la déclaration TDictionary. Impair. Mais merci! – Domus