Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 27
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
Para qué se crean las colecciones, para las colecciones y la eliminación automática de objetos). No he dicho nada sobre el funcionamiento manual en absoluto. ¿De dónde has sacado eso?)
Estudia STL y entenderás de lo que hablo.
cómo copiar correctamente, ¿puede dar un ejemplo para esta plantilla?
He utilizado la ayuda para escribir el método AddValuehttps://www.mql5.com/ru/docs/basis/types/classes
Me he devanado los sesos, pero no veo otra solución en MQL que la que escribí en mi ejemplo.
Muéstrame tu implementación de un correcto almacenamiento de datos.
Pero esta solución es errónea de todos modos. Una solución normal es utilizar algo como el STL. En su caso std::list.
Creo que MQL5 no lo limita. Puedes intentar traducir las fuentes STL del mismo VS a MQL
A eso me refiero en tu caso.
Pero sigue siendo una solución equivocada. La solución normal es utilizar algo como el STL. En su caso std::list.
No creo que MQL5 no lo limite. Puedes intentar traducir el código fuente STL de VS a MQL
Una vez más: MQL no es C++,
y un puntero a un objeto en MQL es, de hecho, un "handle", y un puntero en C++ es una dirección de memoria física.
¿Qué sentido tiene portar las bibliotecas C++ a MQL?
Una vez más: MQL no es C++,
y un puntero a un objeto en MQL es de hecho un handle, y un puntero en C++ es una dirección de memoria física
¿Qué sentido tiene portar las bibliotecas C++ a MQL?
Implementar adecuadamente los patrones de diseño en lugar de crear problemas potenciales utilizando genéricos.
Te debe sorprender, pero los punteros del sistema operativo también son virtuales. Todavía hay que convertirlos en físicos, pero este es un nivel de trabajo completamente diferente con los punteros.
No podrás portar el 1 al 1, pero creo que podrás portar un C++03 despojado. Se dispone de soporte de plantillas y operadores.
1. Quizá te sorprenda, pero los punteros para el sistema operativo también son virtuales. Todavía hay que convertirlos en físicos, pero eso es otro nivel de manejo de punteros.
2. No podrás portar el 1 en el 1, pero podrás portar el C++03 despojado. También hay soporte de plantillas y operadores.
1. No me sorprendería
2. Bueno, esta es la verdad - incluso si se reúnen y hacen un puerto de C ++, todavía causará preguntas, pero ¿por qué no como en el original? - ¿cuál es el objetivo?
Hay una biblioteca estándar de MQL, el uso de ella al menos algún tipo de garantía de que el apoyo será proporcionado por los desarrolladores en el futuro. Ya he sido quemado un par de veces - He utilizado componentes gráficos de los artículos escritos hace unos años, es fácil de usar, al igual que el trabajo con los componentes de Delphi, pero cuando empecé a tratar de implementar proyectos más serios que tengo un montón de preguntas y ninguna respuesta por parte del autor del artículo
No recuerdo quién de los destacados programadores dijo, pero algo así: el código no debe ser bonito o legible, debe cumplir su propósito
como nuestra discusión, si no me equivoco, querías almacenar una estructura con tus datos en listas, te mostré mi implementación, que desarrollé para la misma tarea - ¿funciona mi implementación? - ¿causa errores de ejecución en los programas MQL? - Tengo curiosidad por saber en el transcurso de la conversación
Andrey Pogoreltsev:
C++03 es posible, creo. Hay soporte para plantillas y operadores.
Pues sí, buena suerte ))
El código no tiene que ser bonito o legible, tiene que hacer su trabajo
Esto sólo es cierto hasta que se quiere perfeccionar.
Ya he señalado este error en la clase CLinkedList, pero lo repetiré. Los nodos inicial y final de la lista están cerrados entre sí: el Next del último nodo apunta al primer nodo, mientras que el Previous del primer nodo apunta al último. Como resultado, el bucle de búsqueda estándar se convierte en un bucle infinito:
En C# naturalmente no se observan estas tonterías. El Next del último nodo es cero, así como elPrevious del primer nodo.
No sé si es alguna "característica" inventada por los desarrolladores (aunque no veo su utilidad), pero en cualquier caso el comportamiento de la librería debería corresponder al original.
Ya he señalado este error en la clase CLinkedList, pero lo repetiré. Los nodos inicial y final de la lista están cerrados entre sí: el siguiente del último nodo apunta al primero, mientras que el anterior del primero apunta al último. Como resultado, el bucle de búsqueda estándar se convierte en un bucle infinito:
En C#, naturalmente, no hay tal tontería. El Next del último nodo es cero, así como elPrevious del primer nodo.
No sé si se trata de alguna "característica" inventada por los desarrolladores (aunque no le veo ningún beneficio), pero en cualquier caso el comportamiento de la biblioteca debería corresponder al original.
¿Qué demonios está pasando aquí de nuevo? Están borrando puestos perfectamente buenos de LinkedList. Así, en algún lugar de Europa, un moderador anónimo está borrando los mensajes de los odiados rusos mientras se ríe maliciosamente. Menudo basurero, dan ganas de no escribir.