错误、漏洞、问题 - 页 1784 1...177717781779178017811782178317841785178617871788178917901791...3184 新评论 fxsaber 2017.02.06 13:26 #17831 Rashid Umarov: 看这里 -程序运行关于MQL5中的方案摘要,见下表。 节目 执行 注意事项 脚本 在它自己的线程中,有多少个脚本就有多少个执行线程 循环的脚本不能打断其他程序的工作 专家 在它自己的线程中,有多少专家--就有多少执行线程给他们。 循环的专家不能扰乱其他程序的工作 指标 一个符号上的所有指标有一个执行线程。有 多少个带指标的符号,就有多少个执行线程。 一个指标中的无尽循环将停止该符号上的所有其他指标 谢谢,这就是我的意思 关于交易、自动交易系统和策略测试的论坛 虫子,虫子,问题 Slawa, 2017.02.06 07:22 但在这里,你也不能指望M5的Deinit命令会在M15的Init命令之前被处理。 Aleksey Vyazmikin 2017.02.06 13:29 #17832 -Aleks-:唉,我对这种格式不熟悉。实验表明,图形缓冲器中的数字与双倍数的表示规则相同--即不可能通过图形缓冲器传递这么长的数字--令人沮丧。唉,图形化的缓冲区只能容纳10位数的数字。顺便问一下,为什么有4位小数的限制? A100 2017.02.06 14:43 #17833 编译错误(或者说没有错误信息)class A {public: int i;};class B : public A {};class C : protected A {};class D : protected B {};void OnStart(){ C c; Print( c.i ); //Error: 'i' - protected member access error D d; Print( d.i ); //нормально???} A100 2017.02.07 09:22 #17834 执行错误:EX5加载失败class A;typedef void (*f)( A*);class A { virtual void g( A *a ) {} f ff;};void OnStart() { Print( __FUNCTION__ ); } A100 2017.02.07 11:01 #17835 执行过程中出错class B;void f( B* );class A { public: virtual ~A() { f((B *)&this ); } //(*) virtual void g( A* ) { Print( __FUNCTION__ ); }};class B : public A { public: virtual void g( A* ) { Print( __FUNCTION__ ); }};void f( B *b ) { b.g( b ); }void OnStart() //(1){ B *b = new B; delete b;}结果:(*)中指针 的转换不正确而如果void OnStart() { B b; } //(2)结果: B::g但OnStart(1)和(2)之间的根本区别是什么?此外,C++中类似代码的结果是:A::g fxsaber 2017.02.07 11:21 #17836 A100: 像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它? A100 2017.02.07 11:29 #17837 fxsaber:像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它? 在MQL中,它始终是虚拟的,即使没有明确指定。 fxsaber 2017.02.07 11:40 #17838 A100: 在MQL中,它始终是虚拟的,即使没有明确说明 所以你没有回答这个问题--为了什么? A100 2017.02.07 11:52 #17839 fxsaber: 所以你还没有回答这个问题--为了什么? 如果MQL中所有的析构器都是虚拟的,那么为什么我们需要一个虚拟的析构器的问题就归结为我们需要一个析构器干什么?而且这个问题太笼统了。 fxsaber 2017.02.07 12:16 #17840 A100: 如果MQL中的所有析构器都是虚拟的,那么虚拟析构器是用来做什么的问题就简化为析构器是用来做什么的问题?而且这个问题太笼统了。 我知道析构器是用来做什么的。我不清楚为什么要在其定义前加上虚拟这个词。 1...177717781779178017811782178317841785178617871788178917901791...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
看这里 -程序运行
关于MQL5中的方案摘要,见下表。
节目
执行
注意事项
脚本
在它自己的线程中,有多少个脚本就有多少个执行线程
循环的脚本不能打断其他程序的工作
专家
在它自己的线程中,有多少专家--就有多少执行线程给他们。
循环的专家不能扰乱其他程序的工作
指标
一个符号上的所有指标有一个执行线程。有 多少个带指标的符号,就有多少个执行线程。
一个指标中的无尽循环将停止该符号上的所有其他指标
关于交易、自动交易系统和策略测试的论坛
虫子,虫子,问题
Slawa, 2017.02.06 07:22
但在这里,你也不能指望M5的Deinit命令会在M15的Init命令之前被处理。唉,我对这种格式不熟悉。
实验表明,图形缓冲器中的数字与双倍数的表示规则相同--即不可能通过图形缓冲器传递这么长的数字--令人沮丧。
唉,图形化的缓冲区只能容纳10位数的数字。
顺便问一下,为什么有4位小数的限制?
编译错误(或者说没有错误信息)
public:
int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
C c;
Print( c.i ); //Error: 'i' - protected member access error
D d;
Print( d.i ); //нормально???
}
执行错误:EX5加载失败
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
执行过程中出错
void f( B* );
class A { public:
virtual ~A() { f((B *)&this ); } //(*)
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
B *b = new B;
delete b;
}
结果:(*)中指针 的转换不正确
而如果
结果: B::g
但OnStart(1)和(2)之间的根本区别是什么?
此外,C++中类似代码的结果是:A::g
A100:
像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它?
像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它?
在MQL中,它始终是虚拟的,即使没有明确说明
所以你还没有回答这个问题--为了什么?
如果MQL中的所有析构器都是虚拟的,那么虚拟析构器是用来做什么的问题就简化为析构器是用来做什么的问题?而且这个问题太笼统了。