Enums 为什么我的C++;建筑商';枚举';不能正确使用RTTI

Enums 为什么我的C++;建筑商';枚举';不能正确使用RTTI,enums,c++builder,rtti,Enums,C++builder,Rtti,可能重复: 我有一个具有如下属性的组件:- 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对象instcont不会给我一个“foo”选项的下拉列表,而是显示

可能重复:

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

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对象instcont不会给我一个“foo”选项的下拉列表,而是显示一个值为“2”的编辑字段


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

这是因为枚举值不连续。将枚举声明更改为

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

enum class Foo {VAL0, VAL1, VAL2, VAL3, VAL4};
属性将在对象检查器中正常工作。当然,现在可以选择VAL3,但这并不理想


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

如果无法使用连续值定义枚举,则必须编写自定义属性编辑器。谢谢。意识到这个问题是重复的,(doh!),所以请投票结束。