Ren*_*ann 5 delphi generics delphi-xe4
我在Delphi XE4中遇到了一些奇怪的行为.
我不能set
在泛型类中声明一个类型,其中序数类型在同一个类中声明.
例如:
TTest<T> = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
以上不编译.编译器发出错误" E2001:Ordinal type required ".
一个非泛型的类
TTest = class(TObject)
type
TEnumType = (eOne, eTwo, eThree);
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
编译.
要使泛型类成功编译,必须在类外声明序数类型:
TEnumType = (eOne, eTwo, eThree);
TTest<T> = class(TObject)
type
TEnumTypes = set of TEnumType;
end;
Run Code Online (Sandbox Code Playgroud)
从问题跟踪器来看,这似乎是 XE3/XE4 的回归,在以后的版本中得到了修复: