错误、漏洞、问题 - 页 1355

 
Ilyas:

在不久的将来,如果一个适当的转换语句在类中被重载,它将被调用。

嗯,好吃)非常好的消息
 
老实说,鉴于这种转换是明确的,我没看出有什么问题。 为什么这里会有错误呢? 如果有人想要一个描述符的数值,就不会有错误。
 
Ilyas:
但将描述符转换为数字或反之亦然是没有意义的,这很可能是代码中的一个错误。
我有一些代码片段,其中指针被明确地转换为数字(用于与外部写/读系统的接口,以及错误分析和调试),如果这被禁止,那么灵活性将被降低,我们将不得不重做。
 
Ilyas:
当然,就 "如何在记忆中存储 "而言,你是对的。
但将描述符转换为数字或反之亦然是没有意义的,这很可能是代码中的一个错误。
在不久的将来,如果一个适当的转换操作符在一个类中被重载,它将被调用。
这里可能有一个警告,但不是一个错误。
 
Ilyas:
当然,就 "如何在记忆中存储 "而言,你是对的。
但把描述符减为数字或反之亦然是没有意义的,这很可能是代码中的一个错误。
在不久的将来,如果一个适当的转换操作符在类中被重载,它将被调用。

当然,这是我不注意的错误,我已经写过了。我有95%的错误,根本不是系统错误,而是由于不注意造成的))顺便说一句,我也不认为将描述符投给一个数字有什么意义。对于有指针算术的指针来说,这就更有意思了,例如,你可以把双倍数分解成字节,或者做一些非琐碎的事情。描述符只是一个内部标识符,由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运行系统给出的一些内部标识符,你不能用它做任何事情。

其他人也是如此。开辟新的视野。