Un argumento importante para la introducción de * (que no se ha expresado antes) puede ser el siguiente:
class A { public:
virtualbooloperator==( A& ) { Print(__FUNCSIG__); returntrue; }
virtualbooloperator==( A* ) { Print(__FUNCSIG__); returntrue; }
};
void today( A *a, A *b )
{
a == b; //сравниваются указатели на равенство
a.operator==( b ); //вызывается a.operator( A* )//нет синтаксиса вызова a.operator( A& )
}
por lo que no se puede llamar a.operator( A& ) ni siquiera explícitamente, lo que es significativo
En este caso, la introducción de * junto con la colocación de la operación de comparación de punteros en una función separada (quizás una función del sistema) resolverá todas las ambigüedades existentes
void future( A *a, A *b )
{
a == b; //вызывается a.operator( A* )
a == *b; //вызывается a.operator( A& )
::IsEqualPointer( a, b ); //сравниваются указатели на равенство
}
Si era óptimo, se convertirá en ideal.
Hemos añadido los operadores *(Dereferencia/Inderección) y &(Dirección-de), no vamos a hacer ningún cambio adicional en el lenguaje
A *a,*b;
a== b; // сравнение "указателей"
*a== b; // вызов оператора ==(A *)
a==*b; // вызов оператора ==(A &)// для операции != аналогично
// операция & - эквивалент(короткая запись) вызову GetPointer
Hace poco hice esta pregunta, pero no hubo comentarios de los promotores. ¿Está previsto, o debería hacer una encuesta en el foro sobre si esta característica es necesaria?
Alexey Navoykov: Hace poco hice esta pregunta, pero no hubo comentarios de los promotores. ¿Está previsto, o debería hacer una encuesta en el foro sobre si esta función es necesaria?
Aquí hay otro inconveniente. Cuando intentamos implementar algo como esto
a.b().c().d();
después del primer par de corchetes, la lista de auto-sustitución con los nombres de los miembros de la clase deja de aparecer, y todo el texto posterior tiene que ser escrito completamente a mano/a ciegas.
Alexey Navoykov: Aquí hay otro inconveniente. Al tratar de implementar algo como esto:
entonces, después del primer par de paréntesis, la lista de auto-sustitución con los nombres de los miembros de la clase deja de aparecer, y todo el resto del texto tiene que ser escrito completamente a mano/a ciegas.
Estaría bien añadir al depurador una pista sobre el tipo de variable utilizada, como en todos los IDEs avanzados
boolFileIsExist( const stringnombre_archivo,//nombre_archivo intcommon_flag=0// zona de búsqueda );
El archivo que se comprueba puede ser un subdirectorio. En este caso FileIsExist() devolverá false, y el error 5018 se escribirá en la variable _LastError - "Esto no es un archivo, sino un directorio". (véase el ejemplo de la función FileFindFirst).
El 5018 no funciona en las subcarpetas/subdirectorios
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
La pregunta es: ¿es posible el arbitraje en el mercado de divisas?
por lo que no se puede llamar a.operator( A& ) ni siquiera explícitamente, lo que es significativo
En este caso, la introducción de * junto con la colocación de la operación de comparación de punteros en una función separada (quizás una función del sistema) resolverá todas las ambigüedades existentes Si era óptimo, se convertirá en ideal.Hemos añadido los operadores *(Dereferencia/Inderección) y &(Dirección-de), no vamos a hacer ningún cambio adicional en el lenguaje
Añadidos los operadores *(Dereferencia/Inderección) y &(Dirección-de)
Se han añadido los operadores *(Dereferencia/Inderección) y &(Dirección-de), no se harán/planean cambios adicionales en el lenguaje
¿Esto es sólo en MQL5 o se ha añadido a MQL4 también?
Hace poco hice esta pregunta, pero no hubo comentarios de los promotores. ¿Está previsto, o debería hacer una encuesta en el foro sobre si esta función es necesaria?
después del primer par de corchetes, la lista de auto-sustitución con los nombres de los miembros de la clase deja de aparecer, y todo el texto posterior tiene que ser escrito completamente a mano/a ciegas.
Aquí hay otro inconveniente. Al tratar de implementar algo como esto:
entonces, después del primer par de paréntesis, la lista de auto-sustitución con los nombres de los miembros de la clase deja de aparecer, y todo el resto del texto tiene que ser escrito completamente a mano/a ciegas.
boolFileIsExist(
const stringnombre_archivo,//nombre_archivo
intcommon_flag=0// zona de búsqueda
);
El archivo que se comprueba puede ser un subdirectorio. En este caso FileIsExist() devolverá false, y el error 5018 se escribirá en la variable _LastError - "Esto no es un archivo, sino un directorio". (véase el ejemplo de la función FileFindFirst).
El 5018 no funciona en las subcarpetas/subdirectorios
Por ejemplo, si
y el ejemplo https://www.mql5.com/ru/docs/files/filefindfirst tendría
el resultado sería
y debería ser 1: Directorio = Dir2\.