エラー、バグ、質問 - ページ 2839

 

月足や週足のチャート(特にEURUSD)では、カーソルの動きに合わせて十字線が非常にゆっくり動くので、カーソルをスムーズに斜めに動かして再生してください。他の時間軸でも OKです。以前はこのような遅れはありませんでした。


 
A100:
実行エラーです。

結果:1-2-2-0-0-0

期待される結果:1-2-0-0

C++のようにまた、構文も統一されることが期待されていました。キャストはキャストであり、コンストラクタの呼び出しではありません

すべて正しいようです。ただ、そこでムーブコンストラクタが呼ばれているのでしょう、MQLではコピーに置き換わっています。
そして、その変換は(A)a1のようになります。
 
Alexey Navoykov:
すべて正しいようです。MQLではコピーに置き換わるmoveコンストラクタがそこで呼ばれているのでしょう。
変換は(A)a1のように

(A)a1やA(a1)はキャストではなく、ドキュメントにあるような型の宣言になります。今はブラケットに何か問題があるようですが。言語には、単一のフォーマットが必要です。

 
Valeriy Yastremskiy:

(A)a1 または A(a1)型変換 A a1 は変換ではなく、ドキュメントにあるような型宣言です。今はブラケットに何か問題があるようですが。言語には共通のフォーマットが必要です。

違いは、プラスの(A)a1がオブジェクトコピー変換を意味することです。このため、互換性の問題が発生することがあります。
昔、plusのように(A&)a1という変換をしてくれと頼んだが、今は多分何も変えないだろう。
 
Alexey Navoykov:
ここでの違いは、プラス(A)a1では、オブジェクトのコピーを持ち込むことを意味することです。このため、互換性の問題が発生することがあります。
以前から、プロにあるような音素変換:(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のコードを解釈する場合、私はそれほど断定的なことは言いません。
Code for C++ (online: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の3番目のバージョンをどのように書けばいいのでしょうか?

 
A100:

また、MQLでg_castの第3版を書くにはどうすればいいのでしょうか?

ベースクラスから明示的に関数を呼び出す ことができます。

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();
}