Tem de mostrar uma clara contradição (que mudou o valor constante):
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 - не может быть
}
E sugere que tanto os Utilizadores experientes como os Desenvolvedores devem adivinhar
Aminha ideia é utilizar o mql5 como um sistema de negociação forex, e gostaria de o utilizar na minha própria prática.
É possível alterar os camposde um objecto constantede uma classe ou chamar os seus métodos não constantes? -É possível!
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
}
Eu próprio não gosto deste chip. Pensei que estava segurado contra o acesso não autorizado. Que chatice, no entanto! Não funciona com estruturas constantes, claro. Portanto, tenha em mente esta lacuna.
Em b3095, eu dirijo um guião:
Se remover a sobrecarga f1(T* & Ptr), todas as 5 chamadas retornam vazias f1<const X>(const X*const).
Isto é algum tipo de característica?
Por favor, explique:
A linha *1* dá um erro de compilação - esperado.
Mas a linha *2* compila e funciona bem. Porquê?
Explique, por favor:
A linha *1* dá um erro de compilação - esperado.
Mas a linha *2* compila e funciona bem. Porquê?
Tem de mostrar uma clara contradição (que mudou o valor constante):
E sugere que tanto os Utilizadores experientes como os Desenvolvedores devem adivinharalteração de valor
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Peculiaridades da linguagem mql5, subtilezas e truques
Aminha ideia é utilizar o mql5 como um sistema de negociação forex, e gostaria de o utilizar na minha própria prática.
É possível alterar os camposde um objecto constantede uma classe ou chamar os seus métodos não constantes? -É possível!Eu próprio não gosto deste chip. Pensei que estava segurado contra o acesso não autorizado. Que chatice, no entanto! Não funciona com estruturas constantes, claro. Portanto, tenha em mente esta lacuna.
Tem de mostrar uma clara contradição (que mudou o valor de const):
E sugere que tanto os Utilizadores experientes adivinhem como os DesenvolvedoresSim. Mas no seu exemplo tem uma conversão explícita (através de uma função) de const T para T - ou seja, uma lacuna "legalizada".
((A*)(&a)).i = 1;de forma semelhante - (const A*) converter para A*.
((A)a).i = 1;O seu exemplo converte explicitamente const em non const, e aí está limpo