Errores, fallos, preguntas - página 1355

 
Ilyas:

En un futuro próximo, si se sobrecarga una sentencia de conversión adecuada en una clase, se llamará a ésta.

Mmmm, delicioso ) muy buenas noticias
 
Sinceramente, no vi nada malo en esta conversión, dado que es explícita. ¿Por qué habría un error aquí? Si alguien quiere un valor numérico para un descriptor, no hay ningún error.
 
Ilyas:
Pero no tiene sentido convertir un descriptor en un número o viceversa, y lo más probable es que se trate de un error en el código.
Tengo fragmentos de código en los que los punteros se convierten explícitamente en números (para la interconexión con sistemas de escritura/lectura externos, así como para el análisis de errores y la depuración), si esto se prohíbe, la flexibilidad se verá reducida y habrá que rehacer.
 
Ilyas:
Por supuesto, en cuanto a "cómo se almacena en la memoria", tienes razón.
Pero no tiene sentido convertir el descriptor en un número o viceversa, y lo más probable es que sea un error en el código.
En un futuro próximo, si se sobrecarga un operador de conversión apropiado en una clase, se le llamará.
Aquí puede haber una advertencia, pero no un error.
 
Ilyas:
Por supuesto, en cuanto a "cómo se almacena en la memoria", tienes razón.
Pero no tiene sentido reducir el descriptor a un número o viceversa, y lo más probable es que sea un error en el código.
En un futuro próximo, si se sobrecarga un operador de conversión apropiado en la clase, se le llamará.

Por supuesto, fue un error mío de falta de atención, ya he escrito sobre ello. Tengo el 95% de los errores en absoluto, no errores del sistema, pero debido a la falta de atención )) Por cierto, tampoco veo el sentido de lanzar un descriptor a un número. Es más interesante con los punteros donde hay aritmética de punteros, por ejemplo, puedes descomponer el doble en bytes o hacer algo no trivial. Y un descriptor es sólo un identificador interno, dado por el sistema de ejecución de MT4, no se puede hacer nada con él.

Así es como se produjo este error, no es necesario escribir código por la noche ))

// 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:
Un descriptor sigue siendo un número concreto. El hecho de que no apunte a una sección de memoria concreta no le priva de propiedades numéricas.

Entonces la cadena es también un conjunto de números específicos. Y una imagen también es un número y un impulso eléctrico en un chip...

En general, estudia ingeniería eléctrica, colega.

 
Alexey Navoykov:
Para ser honesto, no vi nada malo en esta cita, teniendo en cuenta que es explícita. ¿Por qué debería haber un error aquí? ...

Porque se viola el control de tipos, y el entorno gestionado, que es la máquina virtual MQL, debería impedir estas cosas:

MQL != C++

 
Ilyas:
Por supuesto, en cuanto a "cómo se almacena en la memoria", tienes razón.
Pero no tiene sentido convertir el descriptor en un número o viceversa, y lo más probable es que sea un error en el código.
En un futuro próximo, si el operador de conversión apropiado está sobrecargado en una clase, se llamará.
Muy chulo y, sobre todo, ideológicamente correcto. ¡Dos manos a favor!
 
Alexey Volchanskiy:

Por cierto, tampoco veo el sentido de reducir el descriptor a cualquier número...

Existe ese punto. Esta es una propiedad muy útil para contenedores de datos específicos, como los diccionarios, donde el descriptor, por definición único, puede ser la clave de una clase. En este caso no será necesario calcular su hash y, lo que es más importante, podrá distinguir la unicidad de los objetos por referencia y por valor (que en realidad son conceptos diferentes). Además, las clases que no están relacionadas entre sí por herencia pueden colocarse en la colección.
 
Alexey Volchanskiy:

Y el descriptor es sólo un identificador interno dado por el sistema de ejecución de MT4, no se puede hacer nada con él.

Otros lo hacen. Abrir nuevos horizontes.