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

 
Ilyas:

近い将来、あるクラスで適切な変換文がオーバーロードされていれば、それが呼び出されるようになる予定です。

うーん、おいしそう)とても良いニュースです。
 
正直なところ、この変換は明示的なものであるため、何も問題はないと思いました。 なぜここで間違いがあるのでしょうか? 誰かが記述子の数値を求めるのであれば、それは間違いではありません。
 
Ilyas:
しかし、ディスクリプターを数値に変換したり、その逆を行うのは意味がなく、これはコードのバグである可能性が高いです。
ポインタを明示的に数値に変換しているコード断片があるのですが(外部の書き込み/読み取りシステムとの連動や、エラー解析やデバッグのため)、これが禁止されると柔軟性が低下し、やり直しが必要になります。
 
Ilyas:
もちろん、「どのようにメモリに保存されるか」という点では、その通りです。
しかし、ディスクリプターを数値に変換したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、あるクラスで適切な変換演算子がオーバーロードされていれば、それが呼び出されるようになる。
ここで警告が出るかもしれませんが、エラーにはなりません。
 
Ilyas:
もちろん、「どのようにメモリに保存されるか」という点では、その通りなのですが。
しかし、ディスクリプターを数値に還元したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、適切な変換演算子がクラス内でオーバーロードされていれば、それが呼び出されるようになる予定です。

もちろん、私の不注意によるミスであることは、すでに書きました。システムエラーではなく、不注意によるエラーが全く95%です ))ちなみに、記述子を数値にキャストする意味もわかりません。ポインタの場合はポインタ演算があるので、例えばdoubleをbyteに分解するとか、自明でないことをした方が面白いです。また、ディスクリプタはMT4のランタイムシステムが与える単なる内部識別子であり、これを使って何かをすることはできません。

それでこのエラーが発生したのです、夜中にコードを書く必要はありません ))

// order - это дескриптор экземпляра класса, создается вот так после открытия ордера, потом заносится в CList открытых ордеров.
// COrder* order = new COrder(ticket, symbol, cmd, volume, price, timeOpen, magic, stoploss, takeprofit, comment, expiration);

// так было неправильно, просто я перепутал order с тикетом, забыл, что это же экземпляр класса, уставший был ))
logBuf[logBufCount++] = double(order);

// так правильно
logBuf[logBufCount++] = (double)order.Ticket
 
A100:
ディスクリプターは、やはり具体的な数字です。特定のメモリセクションを指していないからといって、数値の性質が奪われるわけではありません。

それから、文字列は特定の数字の集合でもあります。そして、絵は数字でもあり、チップ上の電気パルスでもある...。

一般的には、電気工学を勉強する、同僚。

 
Alexey Navoykov:
正直なところ、この引用は明示的なものであることを考えると、何も問題はないと思いました。 なぜ、ここで間違いがあるのでしょうか?...

型制御に違反しているからで、MQL仮想マシン である管理環境は、そのようなことを防ぐべきものです。

MQL != C++

 
Ilyas:
もちろん、「どのようにメモリに保存されるか」という点では、その通りです。
しかし、ディスクリプターを数値に変換したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、あるクラスで適切な変換演算子がオーバーロードされていれば、それが呼び出されるようになる。
とてもクールで、何より思想的に正しい。両手を挙げて賛成!
 
Alexey Volchanskiy:

ところで、私もディスクリプターを任意の数字に還元する意味がわからないのですが...。

そんなポイントがあるのです。これは、辞書のような特定のデータコンテナで、定義上一意である記述子がクラスのキーとなり得る場合に、非常に有用なプロパティである。この場合、そのハッシュを計算する必要はありませんし、何より参照によるオブジェクトと値によるオブジェクトの一意性を区別することができます(実際には異なる概念です)。また、継承で関係のないクラスもコレクションに入れることができる。
 
Alexey Volchanskiy:

また、ディスクリプタはMT4ランタイムシステムから与えられる内部識別子であり、これを使って何かをすることはできません。

他の人もそうです。新しい地平を切り拓く。