MQL5中的OOP问题 - 页 80 1...737475767778798081828384858687...96 新评论 Igor Makanu 2020.06.11 17:19 #791 Vladimir Simakov:我同意))))。这是我的优点。)) 在我写作的时候,我已经看到了这一切是如何展开的。 也就是说,不在正面,而在前一个版本的枪口上就可以了吧? JSONObject * CActor::getJSONObject(const string json)const { JSONParser parser; JSONValue *jv = parser.parse(json); if (jv != NULL && jv.isObject() && (EACTOR_TYPE)(((JSONObject *)jv).getInt("ActorType")) == ActorType) return(jv); Print(__FUNCTION__ + "parser error, json = ",json); delete jv; return(NULL); } Vladimir Simakov 2020.06.11 17:23 #792 Igor Makanu:在我写这篇文章的时候,一切都转好了。也就是说,不是在正面,而是在枪口的一面,前面的选项会起作用吧?这个选项--是的)) 只是它有两个隐含的动态广播 Sergey Dzyublik 2020.06.11 17:30 #793 Vladimir Simakov: 1)突出显示。只在下一行检查)))在lib的创建者的例子中,正好相反,先检查,再投掷) 2)如果JSONObject 有继承人,为什么要放弃? 1) 基本上一个相同的代码在这个主题内讨论了好几天:这里、这里 和这里。 事实上,你在用户使用图书馆的一个例子中发现了一个问题--做得好,谢谢你。 然而,你说在使用整个库的逻辑上有问题,但事实上,事实证明,问题涉及一个具体的例子。 2)你在哪里看到 "有些东西应该往下走 "的说法? 不,情况可能更糟--代码可以正常工作,但产生不正确的结果。 Vladimir Simakov 2020.06.11 17:45 #794 Sergey Dzyublik:2)你在哪里看到 "有些东西应该往下走 "的说法? 不,情况可能更糟--代码可以正常工作,但产生不正确的结果。 当然是IMHO,但是如果我在lib中,通过一个基类的指针来引用一个对象时,得到了未定义的行为,应该在库手册中反映出来(有吗?) Igor Makanu 2020.06.11 18:03 #795 Sergey Dzyublik:不,情况可能更糟--代码可以正常工作,但产生不正确的结果。 不太可能,我的例子是一个基类的方法,JSONObject *是执行的结果,它是一个指向解析器的指针,而在子类方法中的json解析本身是用收到的指针发生的,这在我之前提到的问题中是要 "钉住 "的。 有相当多的检查,在建议的例子中,有3个,在派生类 中,每次调用getInt(), getDouble()方法都会发生检查。 Sergey Dzyublik 2020.06.11 18:09 #796 Vladimir Simakov:当然是IMHO,但是如果我在lib中,通过一个基类的指针来引用一个对象时,得到了未定义的行为,它应该反映在库的手册中(有吗? 但不应该是这样的) 再说一遍,指针和非指针、手册等与此有什么关系?? 在你的例子中,部分LOGIC将从函数中移除,即检查jv.isObject() 这个LOGIC已经被通过dynamic_cast的检查取代。 对于当前版本的库来说,一切都很好,但是,从理论上讲,如果在下一个版本中会有一个新的类,它使用JSONObject 作为基础,而不是你的例子可以正确工作。 Vladimir Simakov 2020.06.11 18:11 #797 Sergey Dzyublik:再说一遍,指针和非指针、手册等与此有什么关系?? 在你的例子中,部分LOGIC将从函数中移除,即检查jv.isObject() 这个LOGIC已经被通过dynamic_cast检查所取代。 对于当前版本的库来说,一切都很好,但是,从理论上讲,如果在下一个版本中会有一个新的类,它使用JSONObject 作为基础,而不是你的例子将正确地与它工作。 所以,另一个版本也不能正确地使用它) Aleksey Mavrin 2020.06.11 20:13 #798 Andrei Trukhanovich: 没有僭越,mql cast也包括 dynamic_cast。在指针错误的情况下,一切都会倒下。 是吗?在dynamic_cast的情况下,如果你检查结果为NULL,则不会有任何损失。在正常的投掷下,它将立即下降。还是我弄错了? Maxim Kuznetsov 2020.06.11 20:46 #799 Vladimir Simakov:当然是IMHO,但是如果在lib中,当通过基类的指针引用一个对象时,我得到了未定义的行为,这应该反映在库的手册中(有吗? 但不应该是这样的) 在职业中应该有一个例外。还有一封给作者的信,因为例外并不是一件好事,只是一个插曲。在mql中没有这样的东西,所以类是在考虑到未来的情况下制定的,有完整的协议。关于讨论的json - 你只有2个选择,要么遵循作者的风格和解决方案,要么自己做一个分叉。 剩下的就是邪恶了。😉 Alexey Navoykov 2020.06.12 06:58 #800 Vladimir Simakov:而这是非常值得的))))。千万不要直接从基地投向后代--这是一种不确定的行为。 在pluses中,通过标准的gimme操作符来投掷引用(无论是向上还是向下)是很危险的,这对我们来说是熟悉和方便的。 1...737475767778798081828384858687...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我同意))))。这是我的优点。))
在我写作的时候,我已经看到了这一切是如何展开的。
也就是说,不在正面,而在前一个版本的枪口上就可以了吧?
在我写这篇文章的时候,一切都转好了。
也就是说,不是在正面,而是在枪口的一面,前面的选项会起作用吧?
这个选项--是的))
只是它有两个隐含的动态广播1)突出显示。只在下一行检查)))在lib的创建者的例子中,正好相反,先检查,再投掷)
2)如果JSONObject 有继承人,为什么要放弃?
1) 基本上一个相同的代码在这个主题内讨论了好几天:这里、这里 和这里。
事实上,你在用户使用图书馆的一个例子中发现了一个问题--做得好,谢谢你。
然而,你说在使用整个库的逻辑上有问题,但事实上,事实证明,问题涉及一个具体的例子。
2)你在哪里看到 "有些东西应该往下走 "的说法?
不,情况可能更糟--代码可以正常工作,但产生不正确的结果。
2)你在哪里看到 "有些东西应该往下走 "的说法?
不,情况可能更糟--代码可以正常工作,但产生不正确的结果。
当然是IMHO,但是如果我在lib中,通过一个基类的指针来引用一个对象时,得到了未定义的行为,应该在库手册中反映出来(有吗?)
不,情况可能更糟--代码可以正常工作,但产生不正确的结果。
不太可能,我的例子是一个基类的方法,JSONObject *是执行的结果,它是一个指向解析器的指针,而在子类方法中的json解析本身是用收到的指针发生的,这在我之前提到的问题中是要 "钉住 "的。
有相当多的检查,在建议的例子中,有3个,在派生类 中,每次调用getInt(), getDouble()方法都会发生检查。
当然是IMHO,但是如果我在lib中,通过一个基类的指针来引用一个对象时,得到了未定义的行为,它应该反映在库的手册中(有吗? 但不应该是这样的)
再说一遍,指针和非指针、手册等与此有什么关系??
在你的例子中,部分LOGIC将从函数中移除,即检查jv.isObject()
这个LOGIC已经被通过dynamic_cast的检查取代。
对于当前版本的库来说,一切都很好,但是,从理论上讲,如果在下一个版本中会有一个新的类,它使用JSONObject 作为基础,而不是你的例子可以正确工作。
再说一遍,指针和非指针、手册等与此有什么关系??
在你的例子中,部分LOGIC将从函数中移除,即检查jv.isObject()
这个LOGIC已经被通过dynamic_cast检查所取代。
对于当前版本的库来说,一切都很好,但是,从理论上讲,如果在下一个版本中会有一个新的类,它使用JSONObject 作为基础,而不是你的例子将正确地与它工作。
所以,另一个版本也不能正确地使用它)
没有僭越,mql cast也包括 dynamic_cast。在指针错误的情况下,一切都会倒下。
是吗?在dynamic_cast的情况下,如果你检查结果为NULL,则不会有任何损失。在正常的投掷下,它将立即下降。还是我弄错了?
当然是IMHO,但是如果在lib中,当通过基类的指针引用一个对象时,我得到了未定义的行为,这应该反映在库的手册中(有吗? 但不应该是这样的)
而这是非常值得的))))。千万不要直接从基地投向后代--这是一种不确定的行为。
在pluses中,通过标准的gimme操作符来投掷引用(无论是向上还是向下)是很危险的,这对我们来说是熟悉和方便的。