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
Entonces, ¿debería ser así para que la función del constructor de copia sea realizada por el operador de asignación sobrecargado?
La pantalla muestra 1, es decir, se ejecuta el constructor de copia.
Creo que es esto: "2) Descomentar un tope con un operador de asignación sobrecargado" no debe servir.
No sé qué es lo correcto, pero el operador de asignación en VS no hace el papel de constructor de copias.
La pantalla muestra 1, es decir, el constructor de la copia se está ejecutando.
Creo que esto: "2) Descomentar un tope con un operador de asignación sobrecargado" no debería ayudar.
Aquí se ejecuta el constructor de copia
no dentro de la función fn().El constructor de copias se realiza aquí
y no dentro de la función fn().En esta variante:
La línea "Se ejecuta el constructor de la asignación" no sale.Y así se deduce:
WWer, si por analogía con el VS, hay que ver la situación concreta, pon un ejemplo concreto de copia/asignación. Lo que se va a ejecutar se decide en el momento.¿Por qué se debe inicializar? Es una instancia de una clase que tiene un constructor precisamente para eso.
¿Y cómo escribir un constructor de copia correcto para este propósito?
La función getCopy() que intenta devolver el objeto está correctamente escrita. Después de anular la asignación ya devuelve un puntero, el error se evapora.
--
La confusión aquí puede estar causada por el hecho de que el lenguaje tiene un cierto "contragolpe sintáctico", asociado a la misma representación sintáctica de acceso a los campos de un objeto estático y uno dinámico (con un punto en lugar de una flecha, lo que, por cierto, es realmente conveniente). Esto es muy común, y puede desdibujar un poco la distinción entre objetos y punteros de objetos, lo que a su vez puede llevar a algunas ilusiones, como que algo puede ser asignado a una variable de objeto estática (o automática). Lejos de eso, una variable de objeto a la izquierda de una asignación es siempre un puntero, si el constructor de copia no está definido.
C++ construye el objeto q2 dentro de la función fn() en retorno, por eso funciona el constructor de copia.
En MQL5, el objeto se construye desde el exterior, por lo que hay diferencias. Eliminémoslos.
Para los que estén interesados: se llama Optimización del valor de retorno
Colegas, ¡buenos días!
¿Pueden decirme cómo puedo obtener los valores de los precios de los diferentes instrumentos financierosde forma sincronizada? Me refiero, por ejemplo, a los precios de cierre de las barras en un momento determinado del pasado en diferentes instrumentos. El uso de la función CopyClose y la obtención de los valores por índice de barras no es absolutamente correcto, porque puede haber algunas barras perdidas para diferentes instrumentos. Que yo recuerde, mql4 tiene la función BarShift por tiempo, ¿hay un análogo en mql5?
Si conoce la hora, puede utilizar esta función.
Dirección por fecha de inicio y número de elementos necesarios
intCopyClose(
stringsymbol_name,// nombre del símbolo
ENUM_TIMEFRAMEStimeframe,// período
datetimehora_de_inicio,// a partir de la cualfecha
intcount,// cuántos copiamos
doubleclose_array[]// matriz para copiar los precios de cierre
);
Si conoce la hora, puede utilizar esta función.
Consulte la fecha de inicio y el número de elementos necesarios
intCopiarCerrar(
stringsymbol_name,// nombre del símbolo
ENUM_TIMEFRAMEStimeframe,// período
datetimestart_time,//desde qué fecha
intcuenta,// cuántos copiamos
doubleclose_array[]// matriz para copiar los precios de cierre
);
Supongamos que quiero encontrar la relación entre close[i] EUR/USD y close[i] GBP/USD, pero si utilizo el índice i, las barras pueden ser diferentes en el tiempo de todos modos, porque hay algunas barras perdidas.
En otras palabras, ¿tengo que usar CopyClose(Symbol, 0, date_of_current_bar, 1, array) en ciclos para cada barra?
Me parece que los bares de TF más antiguos rara vez "desaparecen".
Otra variante es obtener el tiempo de esta barra simultáneamente a través de CopyTime().
Y la tercera opción (probablemente la más fácil) es utilizar los CopyRates en la estructura a la vez.