错误、漏洞、问题 - 页 2416 1...240924102411241224132414241524162417241824192420242124222423...3184 新评论 fxsaber 2019.03.27 05:54 #24151 Andrey Pogoreltsev:这里不需要明确的规定。它应该只是应用重载方法的顺序。也就是说,重载解决方案的任务不是制造困境,而是选择最合适的方法。如果我们忽略访问修饰符,则从表中取第一个方法,或者取决于编译器的实现,但不存在歧义。 例如,如果有2个具有不同输入参数的方法,情况会如何? 回到C++,同一个向量有一个。 因此,这是一个绝对正常的情况。你举了一些非常简单的小学的例子。看来这与原来的例子没有关系。 阿列克谢-纳沃伊科夫。在这个例子中,它是一个非恒定对象的方法,所以它必须被调用,其他条件都一样。 我不知道这个规则,谢谢。 如果我们去掉铸造,使两个方法的参数都是int类型,代码就会正常编译。 所以,是铸造导致了MQL的挂起。 这个铸造一定不会影响代码,因为它是相同的。 似乎问题的原因是,编译器没有检查重载方法的铸造是否相同。 Alexey Navoykov 2019.03.27 06:43 #24152 一般来说,要解决这个问题(以及MQL中的许多其他问题),你需要把其中一个方法移到一个辅助类中。 class A { }; class _B { protected: A _a[]; public: const A * operator[](uint i) const { return &_a[i]; } }; class B : public _B { public: A * operator[](uint i) { return &_a[i]; } }; Andrey Pogoreltsev 2019.03.27 07:16 #24153 fxsaber:你已经给出了一些非常简单的小学例子。这似乎与原来的例子没有什么关系。 你应该读读C++标准,看看这都是由我上面引用的那个规则解决的。 Stanislav Korotky 2019.03.27 10:58 #24154 Slava:首先,在优化缓存中,MT5和MT4都总是将字符串参数截断为63个字符。 在传输事件时,字符串不能超过63个字符。 所以来自外部的东西是有限的 就终端用户产品而言。供应商必须考虑到这些限制。如果他不了解这些,那么他在销售产品之前就没有对其进行足够的测试。这不是关于过去和现在的情况,而是如果你想与时俱进,向好的方向发展,就应该如此。 Dmitry Melnichenko 2019.03.27 11:21 #24155 我遇到了这个问题,在测试一个EA 时,在设置好参数并按下启动按钮后,EA设置被重置为默认值,这可能是什么问题? 视频中的一个例子 Vladimir Karputov 2019.03.27 11:25 #24156 Dmitry Melnichenko:我遇到了这个问题,在测试一个EA 时,在设置好参数并按下启动按钮后,EA设置被重置为默认值,这可能是什么问题? 视频示例在你进入 "设置 "选项卡后,MT5在测试器中自动重置为默认值 见第1号帖子。 Igor Zakharov 2019.03.27 11:32 #24157 我在一个邻近的主题中提出了一个问题,但似乎没有多少人看那里。我在这里复制一下。 https://www.mql5.com/ru/forum/6343/page1020#comment_11112212 简而言之:在期货上(在测试器中)交易被打开和关闭(通过SL/TP),但总是有零利润。这可能是测试器的一个错误吗?还是需要某种技巧? Вопросы от начинающих MQL5 MT5 MetaTrader 5 2019.03.26www.mql5.com Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000... Alexey Navoykov 2019.03.27 13:36 #24158 编译器错误。 当编译(语法检查)带有此代码的.mqh文件时,没有显示错误。 只有在编译可执行文件时才显示,这很不方便。 class A { public: A(int) { } }; class B : public A { }; // Здесь должна быть ошибка 'A' - wrong parameters count B b; Andrey Pogoreltsev 2019.03.27 15:24 #24159 Alexey Navoykov:编译器错误。 当编译(语法检查)带有此类代码的.mqh文件时,不会产生错误。 只有在编译可执行文件时才会产生,这很不方便。 因为赫德原则上不能编译:))) 如果你强迫整个编译器编译一个heder,你会得到很多假阳性结果。 PS。如果不使用这样的类,C++编译器也不会抱怨。 Alexey Navoykov 2019.03.28 04:21 #24160 Andrey Pogoreltsev:因为赫德原则上不能编译:))) 如果你强迫整个编译器编译一个heder,你会得到很多假阳性结果。 PS。如果不使用这样的类,C++编译器也不会抱怨。我知道它不会编译。 我说的是语法检查(在ME中也叫 "编译"),因为我甚至在以前的帖子中用括号指明了它。 如果你在C++编译器中也运行语法检查(通常通过命令行),它就会像个宝贝一样骂人。 1...240924102411241224132414241524162417241824192420242124222423...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里不需要明确的规定。它应该只是应用重载方法的顺序。也就是说,重载解决方案的任务不是制造困境,而是选择最合适的方法。如果我们忽略访问修饰符,则从表中取第一个方法,或者取决于编译器的实现,但不存在歧义。
例如,如果有2个具有不同输入参数的方法,情况会如何?
回到C++,同一个向量有一个。
因此,这是一个绝对正常的情况。
你举了一些非常简单的小学的例子。看来这与原来的例子没有关系。
在这个例子中,它是一个非恒定对象的方法,所以它必须被调用,其他条件都一样。
我不知道这个规则,谢谢。
如果我们去掉铸造,使两个方法的参数都是int类型,代码就会正常编译。 所以,是铸造导致了MQL的挂起。 这个铸造一定不会影响代码,因为它是相同的。
似乎问题的原因是,编译器没有检查重载方法的铸造是否相同。
一般来说,要解决这个问题(以及MQL中的许多其他问题),你需要把其中一个方法移到一个辅助类中。
你已经给出了一些非常简单的小学例子。这似乎与原来的例子没有什么关系。
首先,在优化缓存中,MT5和MT4都总是将字符串参数截断为63个字符。
在传输事件时,字符串不能超过63个字符。
所以来自外部的东西是有限的
就终端用户产品而言。供应商必须考虑到这些限制。如果他不了解这些,那么他在销售产品之前就没有对其进行足够的测试。
这不是关于过去和现在的情况,而是如果你想与时俱进,向好的方向发展,就应该如此。
我遇到了这个问题,在测试一个EA 时,在设置好参数并按下启动按钮后,EA设置被重置为默认值,这可能是什么问题?
视频中的一个例子
我遇到了这个问题,在测试一个EA 时,在设置好参数并按下启动按钮后,EA设置被重置为默认值,这可能是什么问题?
视频示例
在你进入 "设置 "选项卡后,MT5在测试器中自动重置为默认值
见第1号帖子。
我在一个邻近的主题中提出了一个问题,但似乎没有多少人看那里。我在这里复制一下。
https://www.mql5.com/ru/forum/6343/page1020#comment_11112212
简而言之:在期货上(在测试器中)交易被打开和关闭(通过SL/TP),但总是有零利润。这可能是测试器的一个错误吗?还是需要某种技巧?
编译器错误。 当编译(语法检查)带有此代码的.mqh文件时,没有显示错误。 只有在编译可执行文件时才显示,这很不方便。
编译器错误。 当编译(语法检查)带有此类代码的.mqh文件时,不会产生错误。 只有在编译可执行文件时才会产生,这很不方便。
因为赫德原则上不能编译:)))
如果你强迫整个编译器编译一个heder,你会得到很多假阳性结果。
PS。如果不使用这样的类,C++编译器也不会抱怨。因为赫德原则上不能编译:)))
如果你强迫整个编译器编译一个heder,你会得到很多假阳性结果。
PS。如果不使用这样的类,C++编译器也不会抱怨。我知道它不会编译。 我说的是语法检查(在ME中也叫 "编译"),因为我甚至在以前的帖子中用括号指明了它。 如果你在C++编译器中也运行语法检查(通常通过命令行),它就会像个宝贝一样骂人。