错误、漏洞、问题 - 页 2327 1...232023212322232323242325232623272328232923302331233223332334...3184 新评论 fxsaber 2018.11.23 05:17 #23261 Alexey Navoykov:为什么MQL没有修复基类被隐含地投向派生类的错误? 甚至没有一个编译器警告!?这一定是因为这个正确的构造 class A { }; class B : public A { }; A* a; B* b= a; // Нет ошибки没有被考虑在内。 Alexey Navoykov 2018.11.23 05:19 #23262 fxsaber:可能是由于这种正确的设计 没有考虑到你的情况。 这正是不正确的结构。 fxsaber 2018.11.23 05:22 #23263 Alexey Navoykov: 这是完全相同的不正确结构。如果在一个基类的指针后面有一个派生类对象,那就是一个很好的构造。 Alexey Navoykov 2018.11.23 05:52 #23264 fxsaber:如果在基类的指针后面有一个派生类对象,这就是一个很好的设计。 我建议你不要争论,只要相信我,这是一个错误。 fxsaber 2018.11.23 06:18 #23265 Alexey Navoykov: 我建议你不要争论,只要相信 我,这是个错误。这个动词在技术论坛上的适用性很弱。试过C++。 class A { }; class B : public A { }; A* a = new B; B* b= dynamic_cast<B*>(a); // cannot dynamic_cast ‘a’ (of type ‘class A*’) to type ‘class B*’ (source type is not polymorphic) B* b1= a; // invalid conversion from ‘A*’ to ‘B*’ [-fpermissive] 所有的选择都不奏效。原因并不清楚。 A100 2018.11.23 07:11 #23266 Koldun Zloy:如果你让它们可以互换,那么它们都只是不必要的。 在C++中,这是有可能的。 我提出了一个最简单的变体,它可以在明天(而不是10年后)实现,并且在外观上与C++有相似之处(否则为什么要改变任何东西)。此外,如果operator*()没有也不会被实现(论坛上有相关信息),不清楚为什么operator->()会突然被实现(它们的顺序相同)。 TheXpert 2018.11.23 07:43 #23267 Alexey Navoykov:为什么MQL没有修复基类被隐含地投向派生类的错误? 甚至没有一个编译器警告!? 你在等待一个编译错误吗? 不应该有,因为在这种情况下,它是dynamic_cast。 Alexey Navoykov 2018.11.23 07:45 #23268 TheXpert: 你在等待一个编译错误吗? 不应该有,因为在这种情况下,它是dynamic_cast。 见上文,fxsaber提供了C++代码。 TheXpert 2018.11.23 07:53 #23269 Alexey Navoykov: 见上文,fxsaber提供了C++代码。汇编的 class A { public: virtual ~A() = default; }; class B : public A { }; int main(void) { A* a = new B; B* b= dynamic_cast<B*>(a); return 0; } Alexey Navoykov 2018.11.23 08:18 #23270 TheXpert:汇编的 你没有注意到。 1...232023212322232323242325232623272328232923302331233223332334...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为什么MQL没有修复基类被隐含地投向派生类的错误? 甚至没有一个编译器警告!?
这一定是因为这个正确的构造
没有被考虑在内。
可能是由于这种正确的设计
没有考虑到你的情况。
这是完全相同的不正确结构。
如果在一个基类的指针后面有一个派生类对象,那就是一个很好的构造。
如果在基类的指针后面有一个派生类对象,这就是一个很好的设计。
我建议你不要争论,只要相信 我,这是个错误。
这个动词在技术论坛上的适用性很弱。试过C++。
所有的选择都不奏效。原因并不清楚。
如果你让它们可以互换,那么它们都只是不必要的。
在C++中,这是有可能的。
我提出了一个最简单的变体,它可以在明天(而不是10年后)实现,并且在外观上与C++有相似之处(否则为什么要改变任何东西)。此外,如果operator*()没有也不会被实现(论坛上有相关信息),不清楚为什么operator->()会突然被实现(它们的顺序相同)。
为什么MQL没有修复基类被隐含地投向派生类的错误? 甚至没有一个编译器警告!?
你在等待一个编译错误吗? 不应该有,因为在这种情况下,它是dynamic_cast。
见上文,fxsaber提供了C++代码。
汇编的
汇编的