错误、漏洞、问题 - 页 1889 1...188218831884188518861887188818891890189118921893189418951896...3184 新评论 [删除] 2017.05.12 19:03 #18881 这是一个错误还是我错过了什么? 一个正常的抛物线EA会在前一个点放置一个止损单,在买入的情况下会考虑到点差。 而现在的价格(Ask)已经达到了订单价格57781,但订单却没有打开。 fxsaber 2017.05.12 23:27 #18882 执行的错误 是什么?class CLASS1 { public: int i; }; class CLASS2 : public CLASS1 {}; void OnStart() { CLASS1 Object; CLASS2* Ptr = dynamic_cast<CLASS2*>(&Object); Ptr.i = 1; } Konstantin 2017.05.13 06:49 #18883 fxsaber: 什么是运行时错误如果你这样做。class CLASS1 { public: int i; }; class CLASS2 : public CLASS1 {}; void OnStart() { CLASS2 Object; CLASS1* Ptr = dynamic_cast<CLASS1*>(&Object); Ptr.i = 1; }即转换为父类型,那么一切都会正常进行,显然语言结构发生了非常重大的变化,现在派生类型绝对不是祖类型。在C++上检查过。class CLASS1 { public: int i; }; class CLASS2 : public CLASS1 {}; void OnStart() { CLASS1* Object = new CLASS1(); CLASS2* Ptr = (CLASS2 *)&Object; Ptr->i = 1; }将一个父类的对象投到一个派生类中是正确处理的,也就是说,在MQL5机制中,在类型投递方面存在一个错误,除非它不是这样设计的。 [删除] 2017.05.13 08:02 #18884 fxsaber: 什么是执行错误如果你不检查dynamic_cast返回的内容,使用它就没有意义。 fxsaber 2017.05.13 08:06 #18885 Konstantin:如果你这样做。即转换为父类,那么一切都会正常进行,显然语言结构发生了非常重大的变化,现在派生类型毫不含糊地不是祖先类型。 在MQL中,如果没有dynamic_cast,父代铸造一直都可以工作--经典的做法。也许我没有理解dynamic_cast的含义。我也许不明白文档中的例子的意思。有人可以解释一下。 fxsaber 2017.05.13 08:14 #18886 Koldun Zloy:如果你不检查dynamic_cast返回的内容,那么使用它就没有意义。谢谢,在我的例子中,它返回NULL。为什么会发生这种情况?你能举个实际例子说明如何使用这一招吗?开发人员只在Graphic.mqh中使用它,如下所示 curve=dynamic_cast<CCurve*>(m_arr_curves.At(i)); if(CheckPointer(curve)!=POINTER_DYNAMIC) return(false);同时,他们有像这样的类/对象的定义class CCurve : public CObject CObject *At(const int index) const;也就是说,它们将一个父指针传递给一个子指针。嗯,这正是我在我的例子中所做的!障碍在哪里? [删除] 2017.05.13 08:29 #18887 一个指向父类的指针实际上可以包含一个指向子类的指针。class Class1 { }; class Class2 : public Class1 { }; Class1* a = new Class2(); Class2* b = dynamic_cast< Class2* >( a ); // b != NULL fxsaber 2017.05.13 08:35 #18888 Koldun Zloy:一个指向父类的指针实际上可以包含一个指向子类的指针。 谢谢,知道了! Konstantin 2017.05.13 10:47 #18889 fxsaber: 谢谢你,我知道了!我还是不明白为什么在MQL中,你不能把指针投到一个子类的指针类型上,而在C++中却可以,你能解释一下这是MQL的一个错误还是应该如此? TheXpert 2017.05.13 17:01 #18890 Konstantin:这在C++中是可能的,你能解释一下这是否是MQL中的一个错误或应该是这样的吗? 在C++中,也只有当一个基类的指针指向一个子类时才有可能。 1...188218831884188518861887188818891890189118921893189418951896...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是一个错误还是我错过了什么? 一个正常的抛物线EA会在前一个点放置一个止损单,在买入的情况下会考虑到点差。
而现在的价格(Ask)已经达到了订单价格57781,但订单却没有打开。
什么是运行时错误
如果你这样做。
即转换为父类型,那么一切都会正常进行,显然语言结构发生了非常重大的变化,现在派生类型绝对不是祖类型。
在C++上检查过。
将一个父类的对象投到一个派生类中是正确处理的,也就是说,在MQL5机制中,在类型投递方面存在一个错误,除非它不是这样设计的。
什么是执行错误
如果你不检查dynamic_cast返回的内容,使用它就没有意义。
如果你这样做。
即转换为父类,那么一切都会正常进行,显然语言结构发生了非常重大的变化,现在派生类型毫不含糊地不是祖先类型。
如果你不检查dynamic_cast返回的内容,那么使用它就没有意义。
谢谢,在我的例子中,它返回NULL。为什么会发生这种情况?
你能举个实际例子说明如何使用这一招吗?
开发人员只在Graphic.mqh中使用它,如下所示
同时,他们有像这样的类/对象的定义
也就是说,它们将一个父指针传递给一个子指针。嗯,这正是我在我的例子中所做的!障碍在哪里?
一个指向父类的指针实际上可以包含一个指向子类的指针。
一个指向父类的指针实际上可以包含一个指向子类的指针。
谢谢你,我知道了!
我还是不明白为什么在MQL中,你不能把指针投到一个子类的指针类型上,而在C++中却可以,你能解释一下这是MQL的一个错误还是应该如此?
这在C++中是可能的,你能解释一下这是否是MQL中的一个错误或应该是这样的吗?