错误、漏洞、问题 - 页 1784

 
Rashid Umarov:
看这里 -程序运行

关于MQL5中的方案摘要,见下表。

节目

执行

注意事项

脚本

在它自己的线程中,有多少个脚本就有多少个执行线程

循环的脚本不能打断其他程序的工作

专家

在它自己的线程中,有多少专家--就有多少执行线程给他们。

循环的专家不能扰乱其他程序的工作

指标

一个符号上的所有指标有一个执行线程。有 多少个带指标的符号,就有多少个执行线程。

一个指标中的无尽循环将停止该符号上的所有其他指标

谢谢,这就是我的意思

关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

Slawa, 2017.02.06 07:22

但在这里,你也不能指望M5的Deinit命令会在M15的Init命令之前被处理

 
-Aleks-:

唉,我对这种格式不熟悉。

实验表明,图形缓冲器中的数字与双倍数的表示规则相同--即不可能通过图形缓冲器传递这么长的数字--令人沮丧。

唉,图形化的缓冲区只能容纳10位数的数字。

顺便问一下,为什么有4位小数的限制?

 

编译错误(或者说没有错误信息)

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 ); //нормально???
}
 

执行错误:EX5加载失败

class A;
typedef void (*f)( A*);
class A {
    virtual void g( A *a ) {}
        f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
 

执行过程中出错

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

 

A100: 

像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它?

 
fxsaber:

像你上面的例子中的虚拟析构器有什么用?能否在子代中覆盖它?

在MQL中,它始终是虚拟的,即使没有明确指定。
 
A100:
在MQL中,它始终是虚拟的,即使没有明确说明
所以你没有回答这个问题--为了什么?
 
fxsaber:
所以你还没有回答这个问题--为了什么?
如果MQL中所有的析构器都是虚拟的,那么为什么我们需要一个虚拟的析构器的问题就归结为我们需要一个析构器干什么?而且这个问题太笼统了。
 
A100:
如果MQL中的所有析构器都是虚拟的,那么虚拟析构器是用来做什么的问题就简化为析构器是用来做什么的问题?而且这个问题太笼统了。
我知道析构器是用来做什么的。我不清楚为什么要在其定义前加上虚拟这个词。