MQL5 コンパイラはクラスとそのポインタを区別しない - ページ 10

 
Ilya Malev:

そして、これらの操作が実際に 導入されるまでに、どれだけの時間が流れたことか......。風だけが知っているのでしょう。しかし、ええ、かなり重要なことは、あまり成功せずに何年もフォーラムに持ち込まれることがあります。

怠けずに前方に スクロールすれば、すべてを見ることができます。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

イリヤス さん 2015.09.03 14:30


演算子 *(Dereference/Inderection)、&(Address-of)を追加、追加の言語変更は行わない予定
A *a,*b;

 a== b;   // сравнение "указателей"
*a== b;   // вызов оператора ==(A *)
 a==*b;   // вызов оператора ==(A &)

// для операции != аналогично

// операция & - эквивалент(короткая запись) вызову GetPointer

 
Alexey Navoykov:

まあ、怠けずにちょっと前に スクロールすれば、全部見えるんですけどね。

さらに下にスクロールすると、こんなものがあります。

イリヤス
両言語に追加しました。しかし、残念ながら、次のビルドには入りません。

一般的には、3年ほど前、おそらくは追加されたことが明らかですが......。しかし、ニュース、ドキュメント、ヘルプ、同時に追加されたのならともかく、なぜ&の記述だけで、*がないのでしょうか?ドキュメントに&があり、*がないことから判断して、リリース直前に何らかの理由で放棄され、後からようやく追加されたのが*であると考えられます。これを確実に知るには、これが追加されたビルドに関するニュースポストを見つけるか、管理者自身に尋ねる必要があります。

 
ビルド1047、1085、1210、1224(この頃)を実験用に渡すことができます ;)

 
Andrey Khatimlianskii:
ビルド1047、1085、1210、1224(この頃のもの)を実験用に差し上げます ;)

渡してもいいんだよ。私の電子メールはプロフィールにあります。

 
Ilya Malev:

渡してもいいんだよ。私のメールアドレスはプロフィールにあります。

もしかしたら、誰かが気に入って くれるかもしれない。

 
ええ、本当に冬らしい話題です ))
 
47は私のために走っているのではありません。
85 (MT4 13.02.15) * 動作しません。
1210 (MT5 30.10.15) ※動作しません。
1224 (MT5 16.12.15) ※動作しません(質問スレからその投稿から3ヶ月後のスペルで3件です)。

同時に、1224の&が「ハラハラ」とコンパイルされる。という私の仮説が証明されました。

 

つまり、もともと MQLにはポインタが追加されており、コード内でポインタをデリファレンスすることはできないのです。これは面白いアプローチですね。

ポインタの演算を終えるまで残っているのか、それとも何とかもう可能なのか?

class A
{
public:

    int iValue;
};
//......................
A m_A[5];

void OnStart()
{
A* pA;

    for(int c =0; c < 5; c++)
    {
        pA = &m_A[c]; 
        
        (*pA).iValue =c;
        printf("A[%i].iValue: %i", c, m_A[c].iValue);
        // pA++
    }
}
 
SemenTalonov:
(* pA).iValue =c;

これですね。(* ) はここでは必要ありません

* µl では、ポインタに直接 =, ==, !=, &&, || を適用する場合のみ必要です。
 
Ilya Malev:
一方、1224年の&は見事にコンパイルしている。という私の仮説が証明されました。

ところで、すべての公式チャンネル(フォーラム、ヘルプ、ドキュメント)が*オペレータについて沈黙を守っているので、管理者は*オペレータを再び削除して存在しなかったことにしようと考えているのかもしれません)))だから、今のところ、その使い方に大きく依存するのは危険だとイミフです。