对MT5的祝愿 - 页 103 1...96979899100101102103104105106107108109110...117 新评论 Ilyas 2012.11.19 13:19 #1021 A100:ME5在编译时出现了一个错误,在我看来是不应该的。 有道理--会的。 A100 2012.11.25 10:21 #1022 我想让ENUM_XXX形式的预定义枚举实际编号为1,而目前是默认编号,即0。 问题不是要改变默认值,而是要替换掉enum ENUM_ORDER_TYPE { ORDER_TYPE_BUY, ORDER_TYPE_SELL, ... }; 它应该是enum ENUM_ORDER_TYPE { ORDER_TYPE_BUY = 1, ORDER_TYPE_SELL, ... }; 推理如下--一个例子。MqlTradeRequest request { ... ENUM_ORDER_TYPE type; ... } 当我在代码的某个地方分析request.type的值时,如果它等于0,我就不能理解它是没有被初始化还是被初始化了。 request.type = ORDER_TYPE_BUY; 大多数预定义的ENUM_ XXX形式的枚举都是这种情况,相当于RadioButton,需要不合理的复杂性 来正确处理目前的情况 Renat Fatkhullin 2012.11.25 10:34 #1023 不幸的是,由于要保持与其他语言的兼容性,这是不可能的,因为这些语言的编号是从头开始的。 Yedelkin 2012.11.25 11:57 #1024 Renat: 不幸的是,由于要保持与其他语言的兼容性,这是不可能的,因为其他语言的编号是从零开始的。 是什么阻止了你把一个中性标识符写成预定义枚举的第一个成员?比如说。enum ENUM_ORDER_TYPE { ORDER_TYPE_undefined, ORDER_TYPE_BUY, ORDER_TYPE_SELL, ... };两个 "从零开始的编号 "将被保留,未初始化的变量可以很容易地被评估。 Renat Fatkhullin 2012.11.25 12:33 #1025 Yedelkin:是什么阻止了你把一个中性标识符写成预定义枚举的第一个成员?比如说。如果你想想其他人已经在使用原来的一组枚举?这就更不用说整个服务器群的疑惑眼神了。一般来说,这个问题的提出是不正确的。开发商不应该偷懒,通过自毁这个世界来迫使世界其他地方适应自己。 Yedelkin 2012.11.25 12:48 #1026 Renat: 如果你想想其他人已经在使用原来的一组枚举? 好吧,让我们再想想,"关于其他人"。命名的常量 标识符是用来做什么的?- 正确,以便使用这些标识符。此外,为了使用这些标识符,你并不绝对需要知道给枚举成员 分配的具体数值。还是你认为有能力的程序员会使用标识符而不是找出枚举成员的 默认值,然后根据这些默认值进行检查?雷纳特 :这就更不用说整个服务器群的令人困惑的观点了。也就是说,实施建议本身并不难,是吗?雷纳特 :实际上这个问题提得不对。开发者不应该偷懒,通过自我毁灭这个世界来迫使世界上的其他人适应自己。这个主题的作者并不打算通过他的懒惰来破坏其他人的世界。他只是提出了一个具体的改进建议。并解释说,零值原来是过载的。 A100 2012.11.25 12:55 #1027 我想至少引入一个类作为枚举命名元素的范围。 void test1() { enum ENUM_1 { ELEM1 }; } void test2() { enum ENUM_2 { ELEM1 }; } //ошибка class A { enum ENUM_A { ELEM1 }; }; class B { enum ENUM_B { ELEM1 }; //ошибка }; 类的理由:你必须想出一个独特的名字,可能会意外地与库(包括第三方)和/或预定义的名字冲突。此外,你可以在几个类中同时使用类似的SL、TP、PRICE等枚举元素的名称,而不必担心冲突。 职能的理由:不是关键,但同时也是 --- 2012.11.25 12:57 #1028 A100:我们希望为枚举命名的元素引入一个范围 类的理由:你必须想出一个独特的名字,可能会意外地与库和/或预定义的名字冲突。另外,你可以在几个类中同时为SL、TP、PRICE等枚举元素使用类似的名称,而不必担心冲突。 职能的理由:不是关键,但同时也是 这在C++中是什么情况? A100 2012.11.25 12:58 #1029 sergeev: 但在C++中是怎样的呢? 这就是腿的来源--一个悖论,但直到现在(有限制的时候),我才开始明白为什么一切都在那里完成:) 当然,你可以不这样做--为所有的类写一个唯一的名字,但对于大型程序,特别是用于一般使用的库来说,这不是一个选项。 Yedelkin 2012.11.25 13:04 #1030 A100: 我希望预定义的ENUM_XXX形式的枚举实际上相当于RadioButton的编号为1,而现在它们的默认编号为0。问题不在于改变默认值,而在于... 试试这个(用于 "初始化")。 错误的值。一个常数可以隐含地被 转换为任何枚举 类型。 -1 1...96979899100101102103104105106107108109110...117 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
ME5在编译时出现了一个错误,在我看来是不应该的。
我想让ENUM_XXX形式的预定义枚举实际编号为1,而目前是默认编号,即0。 问题不是要改变默认值,而是要替换掉
它应该是
推理如下--一个例子。
当我在代码的某个地方分析request.type的值时,如果它等于0,我就不能理解它是没有被初始化还是被初始化了。
request.type = ORDER_TYPE_BUY;
大多数预定义的ENUM_ XXX形式的枚举都是这种情况,相当于RadioButton,需要不合理的复杂性 来正确处理目前的情况
是什么阻止了你把一个中性标识符写成预定义枚举的第一个成员?比如说。
两个 "从零开始的编号 "将被保留,未初始化的变量可以很容易地被评估。
是什么阻止了你把一个中性标识符写成预定义枚举的第一个成员?比如说。
如果你想想其他人已经在使用原来的一组枚举?这就更不用说整个服务器群的疑惑眼神了。
一般来说,这个问题的提出是不正确的。开发商不应该偷懒,通过自毁这个世界来迫使世界其他地方适应自己。
好吧,让我们再想想,"关于其他人"。命名的常量 标识符是用来做什么的?- 正确,以便使用这些标识符。此外,为了使用这些标识符,你并不绝对需要知道给枚举成员 分配的具体数值。还是你认为有能力的程序员会使用标识符而不是找出枚举成员的 默认值,然后根据这些默认值进行检查?
也就是说,实施建议本身并不难,是吗?
这个主题的作者并不打算通过他的懒惰来破坏其他人的世界。他只是提出了一个具体的改进建议。并解释说,零值原来是过载的。
我想至少引入一个类作为枚举命名元素的范围。
类的理由:你必须想出一个独特的名字,可能会意外地与库(包括第三方)和/或预定义的名字冲突。此外,你可以在几个类中同时使用类似的SL、TP、PRICE等枚举元素的名称,而不必担心冲突。
职能的理由:不是关键,但同时也是
我们希望为枚举命名的元素引入一个范围
类的理由:你必须想出一个独特的名字,可能会意外地与库和/或预定义的名字冲突。另外,你可以在几个类中同时为SL、TP、PRICE等枚举元素使用类似的名称,而不必担心冲突。
职能的理由:不是关键,但同时也是
但在C++中是怎样的呢?
这就是腿的来源--一个悖论,但直到现在(有限制的时候),我才开始明白为什么一切都在那里完成:)
当然,你可以不这样做--为所有的类写一个唯一的名字,但对于大型程序,特别是用于一般使用的库来说,这不是一个选项。
试试这个(用于 "初始化")。
错误的值。
一个常数可以隐含地被 转换为任何枚举 类型。
-1