Errores, fallos, preguntas - página 1707
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Al puntero se le asigna rvalue, que luego se sobrescribe con el nuevo A.
¿Dónde? ¿Aquí mismo?
this[0] = new A;
Aquí el operador[] devuelve el valor contenido en la celda Datos[0]. No es una referencia a esta celda ni un puntero a la misma, sino simplemente una copia del valor contenido en esta celda, es decir, rvalue. No se puede asignar nada a esta copia, por supuesto. No entiendo cómo el operador= cambia esto.
Y sigo sin entender el último ejemplo. La sobrecarga del operador "=" en la clase A convierte este[0] de rvalue a lvalue... No sé cómo. ¿Es algún tipo de característica de la ACM, no hay tal comportamiento en los profesionales.fxsaber, ¿cómo has llegado a esta construcción? Me refiero a la sobrecarga = en A. ¿O por ensayo y error?
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bibliotecas: TypeToBytes
fxsaber, 2016.09.21 21:25
Publicado. Ahora para cualquier variable (estructura o tipo estándar) no sólo funciona la lectura como con el array, sino también la escritura:
_W(AnyVariable)[Pos] = AnyValue; // Записывает по байтовому смещению Pos значение AnyValue в переменную AnyVariable
No era fácil de adivinar antes de la implementación - probablemente resultó ser una buena prueba de la competencia media en POO: sólo conozco los clásicos para las clases.
Si alguien conoce algo similar, por favor, comparta el enlace para la educación.
Con plena comprensión lo hice. De lo contrario, no habría escrito tal cosa.
¿Así que lo entiendes todo, pero no puedes decirlo? )) Ya veo.
¿Dónde? ¿Aquí mismo?
this[0] = new A;
Aquí el operador[] devuelve el valor contenido en la celda Datos[0]. No es una referencia a esta celda ni un puntero a la misma, sino simplemente una copia del valor contenido en esta celda, es decir, rvalue. No se puede asignar nada a esta copia, por supuesto. No entiendo cómo cambia esto el operador= en la clase A.
Tal vez se trate de esos mismos problemas con las referencias en ACM.
Podría resultar que no es el valor devuelto aquí, sino una referencia a él, es decir, lvalue... Pero, ¿por qué no se le puede asignar un nuevo valor de inmediato, por qué necesitamos operator= en la clase A? No entiendo...
Probablemente, se trata de las mismas cosas de referencia en MKL.
Como si no resultara que aquí no se devuelve un valor, sino una referencia a él, es decir, lvalue... Pero, ¿por qué no se le puede asignar un nuevo valor de inmediato, por qué necesitamos operator= en la clase A? No entiendo...
Cuando se asigna algo a un puntero rvalue, el puntero se convierte automáticamente en una referencia a un objeto. Bueno, ¡todo el mundo nació ayer!
Llevo mucho tiempo pidiéndolo al Escritorio, pero dicen que no es seguro, aunque de hecho no es más peligroso que pasar argumentos por referencia.
Cuando asignas algo a un puntero rvalue, el puntero se convierte automáticamente en una referencia a un objeto. Es como ayer, ¿no?
Desajuste de tipo
MqlTick time_msc - long.
CopiarTicks de - ulong.