La linea *1* dà un errore del compilatore - previsto.
Ma la linea *2* compila e funziona bene. Perché?
Devi mostrare una chiara contraddizione (che hai cambiato il valore di 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 - не может быть
}
E tu suggerisci che sia gli utenti esperti che gli sviluppatori dovrebbero indovinare
Lamia idea è di usare mql5 come sistema di trading sul forex, e vorrei usarlo nel mio studio.
È possibile cambiare i campidi un oggetto constdi una classe o chiamare i suoi metodi non-const? -Si può!
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
}
Non mi piace questo chip. Pensavo di essere assicurato contro l'accesso non autorizzato. Che peccato, però! Non funziona con le strutture costanti, ovviamente. Quindi tenete a mente questa scappatoia.
In b3095 eseguo uno script:
Se si rimuove il sovraccarico f1(T* & Ptr), tutte e 5 le chiamate restituiscono void f1<const X>(const X*const).
È una specie di caratteristica?
Si prega di spiegare:
La linea *1* dà un errore del compilatore - previsto.
Ma la linea *2* compila e funziona bene. Perché?
Si prega di spiegare:
La linea *1* dà un errore del compilatore - previsto.
Ma la linea *2* compila e funziona bene. Perché?
Devi mostrare una chiara contraddizione (che hai cambiato il valore di const):
E tu suggerisci che sia gli utenti esperti che gli sviluppatori dovrebbero indovinarecambiamento di valore
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Caratteristiche del linguaggio mql5, sottigliezze e trucchi
Lamia idea è di usare mql5 come sistema di trading sul forex, e vorrei usarlo nel mio studio.
È possibile cambiare i campidi un oggetto constdi una classe o chiamare i suoi metodi non-const? -Si può!Non mi piace questo chip. Pensavo di essere assicurato contro l'accesso non autorizzato. Che peccato, però! Non funziona con le strutture costanti, ovviamente. Quindi tenete a mente questa scappatoia.
Devi mostrare una chiara contraddizione (che hai cambiato il valore di const):
E tu suggerisci che sia gli utenti esperti indovinano che gli sviluppatoriSì. Ma nel tuo esempio hai una conversione esplicita (tramite una funzione) di const T in T - cioè una scappatoia "legalizzata".
((A*)(&a)).i = 1;similmente - (const A*) convertire in A*.
((A)a).i = 1;Il tuo esempio converte esplicitamente const in non const, e lì è pulito