错误、漏洞、问题 - 页 2839

 

在具有月度和周度时间框架的图表(特别是欧元兑美元)上,十字线跟随光标移动的速度非常慢--只要平稳地斜向移动光标就可以播放。在其他时间段 内是可以的。以前没有这样的延迟


 
A100:
执行错误。

结果:1-2-2-0-0-0

预期结果:1-2-0-0

和C++中一样。另外,人们期望语法是一致的:cast就是cast,而不是构造函数调用。

一切似乎都是正确的。可能,那里调用了移动构造函数,在MQL中,它被复制所取代。
而转换的方式就像(A)a1。
 
Alexey Navoykov:
一切似乎都是正确的,我想。移动构造函数可能在那里被调用,在MQL中被复制所取代。
一个转换就像(A)a1

(A)a1或A(a1)不是投射,而是像文档中那样声明一个类型。虽然现在括号里有一些错误。语言需要一个单一的格式。

 
Valeriy Yastremskiy:

(A)a1或A(a1)类型转换 A a1不是一个转换,而是像文档中那样的类型声明。虽然现在括号里有一些错误。语言需要一个共同的格式。

不同的是,(A)a1中的pluses是指对象复制转换。而在MQL中,它是参考转换。 由于这个原因,人们会遇到兼容性问题。
很久以前,我要求他们像pluses中那样进行转换:(A&)a1,但现在他们可能不会改变什么。
 
Alexey Navoykov:
这里的区别是,在pluses(A)a1中,意味着带入一个物体的副本。而在MQL中,它是参考转换。 正因为如此,人们会遇到兼容性问题。
我早就要求他们像专业人员那样进行声波转换:(A&)a1,但他们现在可能不太可能改变什么。

不是si不是python)之间的东西。哎呀,不知道,估计是对象类型转换。经济)。

 
Alexey Navoykov:
一切似乎都是正确的。只是那里可能调用了移动构造函数,在MQL中被复制所取代。
而鬼魂就像(A)a1

我怀疑这是否正确,因为我们说。

class A {
public:
        virtual void f() { Print( 1 ); }
};
class B : public A {
public:
        virtual void g() { ((A)this).f(); }
};
class C : public B {
public:
        virtual void f() { Print( 3 ); }
};
void OnStart()
{
        B *b = new C;
        b.g();
}

在MQL中的结果:3

而在C++中:1.

在任何情况下,让他们检查

 
A100:

我怀疑这是否正确,因为我们说。

在MQL中的结果:3

而在C++中:1.

在任何情况下,让他们检查

所以这正是我上面描述的情况。
 
A100:

我怀疑这是否正确,因为我们说。

在MQL中的结果:3

而在C++中:1.

在任何情况下,让他们检查一下。

在解释C++中的MQL代码时,我不会如此确定。
C++的代码(在线:https://onlinegdb.com/Hy1FIj9Qv)

class A {
public:
        virtual void f() { printf( "1" ); }
};
class B : public A {
public:
        virtual void g_ptr() { ((A*)(this))->f(); }   //3
        virtual void g_ref() { ((A&)(*this)).f(); }   //3
        virtual void g_cast() { ((A)(*this)).f(); }   //1
};
class C : public B {
public:
        virtual void f() { printf( "3" ); }
};
void OnStart()
{
        B *b = new C;
        b->g_ptr();
        b->g_ref();
        b->g_cast();
}

int main()
{
    OnStart();
    return 0;
}
 
Sergey Dzyublik:

在解释C++中的MQL代码时,我不会如此毫不含糊。
该代码为C++语言(在线:https://onlinegdb.com/Hy1FIj9Qv)

你打算如何在MQL中编写第三个版本的g_cast?

 
A100:

那你打算如何在MQL中编写第三版的g_cast?

你可以明确地从基类中调用该函数

class A {
public:
        virtual void f() { Print( 1 ); }
};
class B : public A {
public:
        virtual void g() { this.A::f(); }   //1
};
class C : public B {
public:
        virtual void f() { Print( 3 ); }
};
void OnStart()
{
        B *b = new C;
        b.g();
}