为什么我的C ++ Builder'枚举'与RTTI无法正常工作

时间:2012-05-10 16:26:50

标签: enums c++builder rtti

  

可能重复:
  Why do I get “type has no typeinfo” error with an enum type

我有一个具有如下属性的组件: -

enum class Foo {VAL0, VAL1, VAL2, VAL4 =4};

class TDummy : public TComponent
{
...
  Foo f;
  TDummy() : f(Foo:VAL2) {};

__published: 
  __property Foo foo{ read = f, write = f};
}

但是,安装时,IDE对象instpector没有给我一个'foo'选项的下拉列表,但只显示一个值为'2'的编辑字段。

如何让IDE显示“VAL2”而不是“2”,并显示选项VAL0 / VAL1 / VAL2等的下拉列表?

1 个答案:

答案 0 :(得分:1)

这是因为枚举值不是连续的。从

更改枚举声明
enum class Foo {VAL0, VAL1, VAL2, VAL4 =4};

...到...

enum class Foo {VAL0, VAL1, VAL2, VAL3, VAL4};

该属性将在对象检查器中正常工作。当然,现在可以选择VAL3,这并不理想。

Delphi不支持非连续枚举,因此RTTI无法表示非连续的值集。