Errores, fallos, preguntas - página 2661
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
Pido disculpas por haber simplificado el código al mínimo, introduciendo con ello ciertas inexactitudes, en particular:
- los objetos pasados a la función tienen el mismo tamaño (código actualizado);
- en lugar de la salida tonta printf("1");/printf("2"); en realidad se accede directamente a la interfaz o a los internos del objeto, lo que a su vez no permite inlinear dos algoritmos en una sola función de llamada (código actualizado).
Pido disculpas por haber simplificado el código al mínimo, introduciendo con ello ciertas inexactitudes, en particular:
- los objetos pasados a la función tienen el mismo tamaño (código actualizado);
- en lugar de la salida tonta printf("1");/printf("2"); en realidad se accede directamente a la interfaz o a los internos del objeto, lo que a su vez no permite inlinear dos algoritmos en una sola función de llamada (código actualizado).
O así:
no es lo ideal ya que requiere cambios en la estructura de los objetos utilizados y ensucia la lógica, pero funciona.
Y sí, es mejor hacer una función envolvente sobre test:
A continuación, busque en el proyecto todas las llamadas:
De todos modos, muchas gracias por tu ayuda.
Gracias por la solución,
No es lo ideal porque requiere cambios en la estructura de los objetos utilizados y ensucia la lógica, pero funciona.
Y sí, mejor hacer una función envolvente sobre test:
que buscar en el proyecto todas las llamadas:
De todos modos, muchas gracias por tu ayuda.
Sí, estoy de acuerdo.
Defectos en el funcionamiento de la caché de la función/clase de la plantilla:
(no se ha solucionado con MT5(build 2345)) ** Comportamiento indefinido, creas un objeto complejo envuelto con el tipo interno "C" varias veces y resulta ser un tipo de datos completamente diferente, quizás "B", quizás "int", lo que quieras...
(no se ha solucionado con MT5(build 2345)) * Error de compilación, error al pasar un puntero de función como argumento de plantilla const ref.
(no se ha solucionado con MT5(build 2345)) * Error de compilación, el objeto B<int> puede ser creado después del objeto de clase B<void*>, pero se produce un error de compilación si se hace antes.
Defectos en el trabajo de la función/clase de la plantilla:
(no se ha solucionado con MT5(build 2345)) ** Error de compilación, error dentro de la función de plantilla, el puntero pasado dentro de la operación deconversión de tipo explícito se comporta como una clase, de lo contrario como un puntero.
(no se ha solucionado con MT5(build 2345)) ** Error de compilación, error con la generación de código de la clase de la plantilla mientras se utiliza la clase interna.
(no se ha solucionado con MT5(build 2345)) ** Error de compilación, error al intentar acceder a la clase interna para el parámetro de plantilla de la función de plantilla.
(no se ha solucionado con MT5(build 2345)) ** Error de compilación, error al generar el método/clase de la plantilla, el proceso de "autocompletado" del parámetro de la plantilla se sale del ámbito del código del programa principal.
(no se ha solucionado con MT5(build 2345)) * Error de compilación, error con la ausencia de autogeneración del código de la clase de la plantilla cuando la clase de la plantilla actúa como valor de retorno para el método de la plantilla.
(no se ha solucionado con MT5(build 2345)) * Error de compilación, error en la definición de la clase interna - no hay referencia al espacio de nombres global cuando se define una clase base.
(no se ha solucionado con MT5(build 2345)) *(nuevo) Error de compilación, error al pasar una estructura interna a una función de plantilla, eltipo de datos resultante no puede utilizarse como tipo de datos base para otra estructura interna en la clase de plantilla.
(no se ha solucionado con MT5(build 2345)) *(nuevo) Error de compilación, un error al llamar a una función de plantilla con tipos de argumentos explícitos cuando se llama desde una función no de plantilla sobrecargada.
Defectos en el desajuste de la prioridad de las llamadas a funciones sobrecargadas en MQL en comparación con C++:
(no se ha solucionado con MT5(build 2345)) *** Error de compilación cuando hay herencia de clases A <= B <= C <= D y se implementan dos funciones de sobrecarga, por ejemplo, una con parámetro A* y otra con parámetro B*, entonces al pasar en dicha función un objeto C* o D* en MQL se produce un error de compilación "llamada ambigua a función sobrecargada".
(no se ha solucionado con MT5(build 2345)) ** Tiempo de ejecución, desajuste de prioridades en las llamadas a funciones de plantilla sobrecargadas.
(no solucionado por MT5(build 2345)) **(nuevo) Error de compilación, la prioridad de las llamadas de las funciones de plantilla sobrecargadas depende en realidad del tipo de parámetro de la plantilla, lo que teóricamente no debería afectar al resultado de la compilación.
(no se ha solucionado con MT5(build 2345)) **(nuevo) Error de compilación, se produce un error de compilación al generar código para una función de plantilla a pesar de que existe una función de plantilla sobrecargada con una firma adecuada para los parámetros pasados.
Sugerencias:
ref- al permitir que los literales y las variables temporales se pasen como argumentos const ref a una función.
enlace- cuando semueven los archivos del proyecto en la pestaña Proyecto, para los archivos movibles que están abiertos y en las pestañas ME, actualiza su ruta de ubicación automáticamente.
link- para introducir la funcionalidad de la declaración typedef en MQL.
link- sobre la posibilidad de forzar la generación de constructores de copia y operadores de asignación por defecto.
Sergey Dzyublik:
Спасибо за вариант решения
el enlace es una copia temporal, por lo que no se puede cambiar la estructura
La referencia es una copia temporal, por lo que no se puede cambiar la estructura
Tiene razón en el caso general...
Pero en casos particulares es mucho más complicado y de hecho las estructuras dadas son iteradores y no es su contenido lo que se cambia, sino los objetos a los que se refieren.
Así que el problema está resuelto en el caso especial y se lo agradezco.
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
Sergey Dzyublik, 2020.03.01 12:53
Si entiendo bien, ¿esta función devolverá el puntero al objeto que no existe?
¿Entiendo correctamente que esta función devolverá un puntero a un objeto inexistente?
Sí, en este ejemplo la función devolverá un puntero a un objeto inexistente.
El propósito principal de este código es mostrar que hay funcionalidad de trabajo para una clase simple y al mismo tiempo no hay ninguna para una clase de plantilla.