1

我正在使用 MT4 枚举作为选择输入:

enum ENUM_myChoice{ 
     a, b, c, e, f, g
     };

问题是如果我必须d按字母顺序将“”添加到列表中
,我的所有模板都使用ef或者g因为它们偏离 1 而被破坏。

是否有一个优雅的解决方案或只有蛮力?

提前致谢

4

1 回答 1

0

MQL4enum anEnumNAME{...};语法如何工作?

好吧,
鉴于您需要同时保留
旧” enum(没有“ d”)排序
字母顺序,
只有一件事是确定的- 您不能enum按照上面的建议使用。

MQL4 实现enum为用于为编译器阶段注册“命名常量”的语法糖,并将此类元素转换为新的特定数据类型的有序枚举(在编译阶段不匹配其他强类型语言数据类型)。

规则:如果某个值没有分配给作为枚举成员的命名常量,它的新值将自动形成。如果它是枚举的第一个成员,则会为其分配 0 值。对于所有后续成员,将根据之前成员的值加一来计算值。

这意味着,您不能混合和破坏字母顺序和偶然安排的顺序(正如好莱坞在尾随标题中所说:“按出现顺序”)。


那么一个人能做什么呢?

雨人解决方案(“和查理·巴比特一起去霍尔布鲁克。 ”):

enum ENUM_myChoice{ 
     a = uchar( "a" ),
     b = uchar( "b" ),
     c = uchar( "c" ),
     e = uchar( "e" ),
     f = uchar( "f" ),
     g = uchar( "g" ),
  // ----------------- WHERE ONE CAN BENEFIT AN OUT-OF-ORDINAL ORDER ADDING:
     d = uchar( "d" )
     };
于 2016-12-31T21:47:26.217 回答