La línea *1* da un error de compilación - esperado.
Pero la línea *2* compila y funciona bien. ¿Por qué?
Tienes que demostrar una clara contradicción (que has cambiado el valor de la const):
int f( int &p ) { return p = !p; }
struct X {
constint i;
X( int i ) : i( i ) {}
X( X& x ) : i( f(x.i) ) {}
};
voidOnStart()
{
X x1( 1 );
constint i = x1.i;
{ X x2 = x1; }
Print( i == x1.i ); //Результат: false - не может быть
}
Y sugieres que tanto los usuarios experimentados como los desarrolladores deben adivinar
Mi idea es utilizar mql5 como un sistema de comercio de divisas, y me gustaría utilizarlo en mi propia práctica.
¿Es posible cambiar los camposde un objeto constde una clase o llamar a sus métodos no const? -¡Puedes hacerlo!
template <typename T>
T GetMe( const T Ptr )
{
return((T)Ptr);
}
class A
{
public:
int i;
};
voidOnStart()
{
const A a;
GetMe(&a).i = 1;Print(a.i); // 1
}
No me gusta este chip. Pensé que estaba asegurado contra el acceso no autorizado. ¡Pero qué mal! No funciona con estructuras const, por supuesto. Así que tenga en cuenta esta laguna.
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.
En b3095 ejecuto un script:
Si se elimina la sobrecarga f1(T* & Ptr), las 5 llamadas devuelven void f1<const X>(const X*const).
¿Se trata de algún tipo de característica?
Por favor, explique:
La línea *1* da un error de compilación - esperado.
Pero la línea *2* compila y funciona bien. ¿Por qué?
Por favor, explique:
La línea *1* da un error de compilación - esperado.
Pero la línea *2* compila y funciona bien. ¿Por qué?
Tienes que demostrar una clara contradicción (que has cambiado el valor de la const):
Y sugieres que tanto los usuarios experimentados como los desarrolladores deben adivinarcambio de valor
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Características del lenguaje mql5, sutilezas y trucos
Mi idea es utilizar mql5 como un sistema de comercio de divisas, y me gustaría utilizarlo en mi propia práctica.
¿Es posible cambiar los camposde un objeto constde una clase o llamar a sus métodos no const? -¡Puedes hacerlo!No me gusta este chip. Pensé que estaba asegurado contra el acceso no autorizado. ¡Pero qué mal! No funciona con estructuras const, por supuesto. Así que tenga en cuenta esta laguna.
Tienes que demostrar una clara contradicción (que has cambiado el valor de la const):
Y sugieres que tanto los usuarios experimentados como los desarrolladores adivinenSí, pero en tu ejemplo tienes una conversión explícita (a través de una función) de const T a T, es decir, una laguna legalizada.
((A*)(&a)).i = 1;similarmente - (const A*) convertir a A*.
((A)a).i = 1;Tu ejemplo convierte explícitamente const en no const, y ahí está limpio