class A {};
class B : public A {};
class C {
public:
virtualint g( A* a ) { return ( 1 ); }
virtualint g( B* b ) { return ( 2 ); } //здесь полное совпадение
};
class D : public C {
public:
virtualint g( A* a ) { return ( 3 ); }
};
voidOnStart()
{
B* b = new B;
D* d = new D;
Print( d.g( b ));
}
所有经纪人的终端都停止工作了,包括我从这个网站下载的那个...
重启没有用,重启和重装也没有用,以前一切都很好,我没有在电脑上安装任何东西,在终端也没有安装任何东西。只在市场上购物。
把运行中的指标和EA一块一块地摘下来,看看问题出在哪里。
点击错误描述窗口中的 "细节",以了解细节。请在此复制全文。
空,没有一个指标和EA终端,同样的事情。
逐一捕捉运行中的指标和EA,看看问题出在哪里。
点击错误描述窗口中的 "详细信息 "按钮,以获得详细信息。请在此复制全文。
我认为你想要它?
崩溃 --> 000007FCE8441F4F 48396B10 cmp [rbx+0x10], rbp
000007FCE8441F53 7530 jnz 0x7fce8441f85
000007FCE8441F55 488B03 mov rax, [rbx].
000007FCE8441F58 4C8BCF mov r9, rdi
000007FCE8441F5B 4D8BC7 mov r8, r15
000007FCE8441F5E 8BD6 mov edx, esi
000007FCE8441F60 488BCB mov rcx, rbx
: #021 00000000000011c8 EIP: 00000000000000 ESP: 000000000000000000
: #022 0000000000001068 EIP: 000007fcf54245db ESP: 0000006818cffac8
000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution(ntdll.dll)。
000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger(ntdll.dll)。
000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)。
000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo(ntdll.dll)。
: #023 000000000000111c eip: 000007fcf54245db esp: 0000006818e5fb18
000007FCF54245D1:00000A [000007FCF54245DB] NtYieldExecution(ntdll.dll)。
000007FCF5426E50:000833 [000007FCF5427683] RtlUnicodeStringToInteger(ntdll.dll)。
000007FCF3681828:00001A [000007FCF3681842] BaseThreadInitThunk(kernel32.dll)。
000007FCF54774E8:000021 [000007FCF5477509] RtlVerifyVersionInfo(ntdll.dll)。
在解析前面的例子时,我们发现了MQL和C++之间的一个关键区别
在MQL(build 978)中,结果是:2(C::g被调用),而在C++中,结果是:3(D::g被调用)。
因此,事实证明,MQL优先考虑参数的精确类型匹配,即使它在一个基类中,而C++优先考虑最接近的可能的类,可能没有精确的类型匹配,但可以有一个隐式类型转换。
请在最近的C++编译器上检查结果,如果确认有差异,最好决定支持C++以达到统一的目的。
我已经在私信中 发送了全文。
复制构造函数和赋值运算符 在未来是否有计划?
基类A有15个字段,它有两个子类B和C--每个都有+5个字段。
而剩下的就是20分钟的任务了。
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
A100, 2014.08.29 16:28
通过Print(...)输出时出错
打印时,输出的第一部分从1跳到53(每次都是不同的部分 - 没有明确的模式),有时在中间跳过
然后打印到299,没有跳过。
如果你有时间,请尝试运行它,如果输出中出现任何跳动,请写信给我。如果没有跳过 - 尝试增加n(我在n>=300时开始跳过)和/或删除
应要求 #1060016 | 2014.08.29 16:30https://www.mql5.com/ru/users/A100/servicedesk/closed/14774
出现了一个问题:"我如何通知印刷品的遗漏情况?"- 最简单的选项是用省略号代替跳过的行的单行。

当用户看到这一行时,他就明白有遗漏,需要参考.log文件(不需要行号--只是作为一个例子)。在解析前面的例子时,我们发现了MQL和C++之间的一个关键区别
在MQL(build 978)中,结果是:2(C::g被调用),而在C++中,结果是:3(D::g被调用)。
因此,事实证明,MQL优先考虑参数的精确类型匹配,即使它在一个基类中,而C++优先考虑最接近的可能的类,可能没有精确的类型匹配,但可以有一个隐式类型转换。
请在最近的C++编译器上检查结果,如果确认有差异,最好决定支持C++以达到统一的目的。
这就对了。优先考虑完全匹配。而这确实是正确的。
我们为什么需要这样的统一?对设计不当的方案进行统一处理
复制构造函数和赋值运算符 在未来是否有计划?
基类A有15个字段,它有两个子类B和C--每个都有+5个字段。
而剩下的就是20分钟的任务了。