// 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
近い将来、あるクラスで適切な変換文がオーバーロードされていれば、それが呼び出されるようになる予定です。
しかし、ディスクリプターを数値に変換したり、その逆を行うのは意味がなく、これはコードのバグである可能性が高いです。
もちろん、「どのようにメモリに保存されるか」という点では、その通りです。
しかし、ディスクリプターを数値に変換したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、あるクラスで適切な変換演算子がオーバーロードされていれば、それが呼び出されるようになる。
もちろん、「どのようにメモリに保存されるか」という点では、その通りなのですが。
しかし、ディスクリプターを数値に還元したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、適切な変換演算子がクラス内でオーバーロードされていれば、それが呼び出されるようになる予定です。
もちろん、私の不注意によるミスであることは、すでに書きました。システムエラーではなく、不注意によるエラーが全く95%です ))ちなみに、記述子を数値にキャストする意味もわかりません。ポインタの場合はポインタ演算があるので、例えばdoubleをbyteに分解するとか、自明でないことをした方が面白いです。また、ディスクリプタはMT4のランタイムシステムが与える単なる内部識別子であり、これを使って何かをすることはできません。
それでこのエラーが発生したのです、夜中にコードを書く必要はありません ))
ディスクリプターは、やはり具体的な数字です。特定のメモリセクションを指していないからといって、数値の性質が奪われるわけではありません。
それから、文字列は特定の数字の集合でもあります。そして、絵は数字でもあり、チップ上の電気パルスでもある...。
一般的には、電気工学を勉強する、同僚。
正直なところ、この引用は明示的なものであることを考えると、何も問題はないと思いました。 なぜ、ここで間違いがあるのでしょうか?...
型制御に違反しているからで、MQL仮想マシン である管理環境は、そのようなことを防ぐべきものです。
MQL != C++
もちろん、「どのようにメモリに保存されるか」という点では、その通りです。
しかし、ディスクリプターを数値に変換したり、その逆をするのは意味がなく、コードのバグである可能性が高いです。
近い将来、あるクラスで適切な変換演算子がオーバーロードされていれば、それが呼び出されるようになる。
ところで、私もディスクリプターを任意の数字に還元する意味がわからないのですが...。
また、ディスクリプタはMT4ランタイムシステムから与えられる内部識別子であり、これを使って何かをすることはできません。