我正在使用 MT4 枚举作为选择输入:
enum ENUM_myChoice{
a, b, c, e, f, g
};
问题是如果我必须d
按字母顺序将“”添加到列表中
,我的所有模板都使用e
,f
或者g
因为它们偏离 1 而被破坏。
是否有一个优雅的解决方案或只有蛮力?
提前致谢
我正在使用 MT4 枚举作为选择输入:
enum ENUM_myChoice{
a, b, c, e, f, g
};
问题是如果我必须d
按字母顺序将“”添加到列表中
,我的所有模板都使用e
,f
或者g
因为它们偏离 1 而被破坏。
是否有一个优雅的解决方案或只有蛮力?
提前致谢
enum 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" )
};