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

 

諸君、言語の使い勝手を大幅に向上させるために、https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx というプロパティを 追加してみてはどうだろうか。

セッター、ゲッター、ブラケットで常に踊らされるのは非常に迷惑なことです。

 
Alexey Navoykov:

諸君、言語の使い勝手を大幅に向上させるために、https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx というプロパティを 追加してみてはどうだろうか。

セッター、ゲッター、ブラケットで常に踊らされるのは非常に迷惑なことです。

アレクセイ、大賛成だが、ここではなく、投票を行うべきだろう。以下、松葉杖です。MQLでは試していません http://rsdn.ru/article/vcpp/props.xml
Свойства в С++
  • rsdn.org
В этой статье автор рассматривает различные способы реализации свойств в стиле Visual Basic на C++. Некоторые способы специфичны для Visual C++, тогда как другие годятся для применения в любой программе, написанной на языке C++.
 
Alexey Volchanskiy:
アレクセイ、大賛成だが、ここではなく、投票を行うべきだ。ここにはひつまぶしがあります。MQLでは試していません http://rsdn.ru/article/vcpp/props.xml

リンク先のエンコーディングがおかしいのか、いつも赤文字で表示されますね。 でも言いたいことはわかります、こういう松葉杖は以前読んだことがあります。 MQLではゴースト演算子のオーバーロードがサポートされていないので、今のところ実装は無理ですね。しかし、VSのこのネイティブ機能は、特にマクロでラップされたときに非常に便利です。 しかも、追加のリソースを消費しません。 だから、MQLにもプロパティを実装する時期が来たのです。プロパティなしではすべてが不格好に見えますから。

 
Alexey Volchanskiy:

MQL4コンパイラのバグを発見し、解決しました。不注意で、見つけるのに2日かかりました。問題の本質はこうだ:最も単純なコードを与える。コンパイルエラーやワープエラーではなく、ランタイムエラーが発生するのですが。

    double ptest = double(test); // тут должна быть ошибка компиляции!!! 

ここに間違いはありません。ここには明確な型式変換が ある。VSではこんな感じでしょうか。

  double ptest = (double)(int)(test);
どんな違いがあるのでしょうか?
 
A100:
ここに間違いはありません。ここでは、明示的な型変換が 行われています。
明示的にでもクラスを意味のある型にキャストすることはできません。間違いなくエラーになります。
 
マーケットオーバービューウィンドウ(MT4、MT5)でシンボルをソートする方法を教えてください。片方の端子ではきれいに整理され、もう片方の端子ではぐちゃぐちゃになっている。ずいぶん前に整理したのですが、どうやって整理したのか覚えていません。ドキュメントには、シンボルを1つずつ新しい場所にドラッグすること以外、何も書かれていません。 しかし、私は正確にそれを行っていません - リスト全体を手動でソートすることは可能です。:-/
 
Vasiliy Sokolov:
明示的にでもクラスを意味のある型にキャストすることはできません。間違いなくエラーになります。

クラスではなくポインターであり、ポインターは数字です。

class A{};
void f()
{
        A *a;
        int i = int(a);
}

C++はエラーなくコンパイルできる

doubleへの明示的な直接変換を無効にすると、次回はdoubleの代わりにintが入り、同じ結果になるので、コンパイラは再び有罪になります。自分のエラーとコンパイラのエラーを区別する必要があるのです。

 
A100:

クラスではなくポインターであり、ポインターは数字である。

C++はエラーなくコンパイルできる

doubleへの明示的な直接変換を無効にすると、次回はdoubleの代わりにintが入り、同じ結果になるので、コンパイラは再び有罪になります。自分のエラーとコンパイラのエラーを区別する必要があります。

MQL4/5にはポインタが存在しないので、そこにはポインタはありません。ハンドルがあります。

----------------------

サービスデスクから回答がありました

サポートチーム 2015.08.24 09:44
投稿ありがとうございます、修正します。
確かに、ここでコンパイルエラーが 発生したのでしょう。


サポートチーム 2015.08.24 14:39

ステータス:オープン クローズ
投稿ありがとうございます、修正しました。これでコンパイラはコンパイルエラーを出します。
 
Alexey Volchanskiy:

MQL4/5にはポインタがないため、そこにはポインタがありません。ディスクリプターがあります。

ディスクリプターは、やはり具体的な数字です。この数値が特定の記憶場所を指していないからといって、数値の性質が失われるわけではありません。
 
A100:
ディスクリプターは、やはり具体的な数値
もちろん、「どのようにメモリに保存されるか」という点では、その通りなのですが。
しかし、ディスクリプターを数値に変換したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、適切な変換文がクラス内でオーバーロードされれば、それが呼び出されるようになる。