加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何在泛型类中声明枚举类型的集合类型

发布时间:2020-12-15 04:14:30 所属栏目:大数据 来源:网络整理
导读:我在Delphi XE4中遇到了一些奇怪的行为. 我不能在泛型类中声明一个set类型,其中序数类型在同一个类中声明. 例如: TTestT = class(TObject)type TEnumType = (eOne,eTwo,eThree); TEnumTypes = set of TEnumType;end; 以上不编译.编译器发出错误“E2001:Ord
我在Delphi XE4中遇到了一些奇怪的行为.

我不能在泛型类中声明一个set类型,其中序数类型在同一个类中声明.

例如:

TTest<T> = class(TObject)
type
  TEnumType  = (eOne,eTwo,eThree);
  TEnumTypes = set of TEnumType;
end;

以上不编译.编译器发出错误“E2001:Ordinal type required”.

一个非泛型的类

TTest = class(TObject)
type
  TEnumType  = (eOne,eThree);
  TEnumTypes = set of TEnumType;
end;

编译.

要使泛型类成功编译,必须在类外声明序数类型:

TEnumType  = (eOne,eThree);
TTest<T> = class(TObject)
type
  TEnumTypes = set of TEnumType;
end;

>这种行为是否被视为错误?如果是,是否已在更高版本中修复?
>有没有人有另一种解决方法?我想在类中声明类型,因为它们仅在此类的私有部分中使用.

解决方法

从查看问题跟踪器看,它似乎是围绕XE3 / XE4的回归,它在以后的版本中得到修复:

> http://qc.embarcadero.com/wc/qcmain.aspx?d=126675
> http://qc.embarcadero.com/wc/qcmain.aspx?d=112682
> http://qc.embarcadero.com/wc/qcmain.aspx?d=117200

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读