Adottare solo (*a) per riferirsi alle funzioni membro non dà vantaggi evidenti, ma porta invece all'impossibilità di una semplice e chiara applicazione multipla degli operatori.
Prova a riscriverlo tenendo conto del tuo suggerimento
Non potete usare l'oggetto stesso al posto del puntatore perché l'operatore <<(...) può restituire solo un puntatore all'oggetto.
Devi avermi frainteso, non parlavo di disabilitare l'implementazione attuale, ma di rendere possibile anche prendere un riferimento o un puntatore a un oggetto in modo da non dipendere dai capricci del compilatore.E deciderò cosa fare in ogni caso. Se ho bisogno di un programma super-affidabile, posso facilmente farlo nel modo che hai descritto. Sì, è complicato. Ma se i metaquote introducono improvvisamente un'operazione speciale dell'operatore << per i puntatori, non ne avremo paura.
Non ho detto di proibire l'implementazione attuale. Ho chiesto di fare una possibilità aggiuntiva per prendere un riferimento o un puntatore a un oggetto, in modo da non dipendere dai capricci del compilatore.
Se (b) è un oggetto, allora la caratteristica aggiuntiva (&b) in aggiunta all'esistente GetPointer( b ) è chiara - porta la sintassi più vicina al C++.
Se (a) è un puntatore, la caratteristica aggiuntiva (*a) in aggiunta all'esistente (a) dà probabilmente un compromesso ragionevole
class A {
booloperator==(A *);
A *operator<<(A *);
A *operator>>(A *);
};
void f()
{
A *a = new A();
if ( a == a ); //сравнение указателейif ( *a == *a ); //вызов operator==(A *)
a << a >> a; //вызов operator<<(A *) и operator>>(A *)
*a << *a; //вызов operator<<(A *)
}
Da un lato si elimina una contraddizione e dall'altro non si disturba l'ordine esistente
Il compilatore permette variabili dal nome identico nei parametri e nei corpi delle funzioni all'interno dello stesso ambito
int f( int a )
{
int a = 10;
return ( a );
}
voidOnStart()
{
Print( f( 5 )); //Результат: 10, а должен был - выдать ошибку при компиляции
}
Anche se viene generato un avvertimento, non è sufficiente per un errore così difficile da trovare (in un codice grande). Almeno il compilatore C++ genera lo stesso errore nello stesso caso
Forse la conseguenza dell'errore precedente è che questo costrutto
class A {
public:
A( int a ) {}
};
void g( int a ) { Print( a ); }
int f( int a )
{
A a( 15 );
g( uint( a ));
return ( 8 );
}
voidOnStart()
{
Print( f( 5 ));
}
Causa errore di esecuzione: file EX5 non valido (8)
Ho riscontrato un problema con la funzione"MarketBookGet". Non è stabile, cioè può funzionare senza problemi, o può non funzionare affatto, cioè restituire false. Chi l'ha affrontato? Come si risolve e qual è il problema? Broker Otkrytie.
Quando il prezzo dell'ordine pendente viene spostato con il drag'n'drop a un nuovo livello, lo SL/TP cambia insieme ad esso. C'è un modo per disabilitarlo? Non dovresti sempre muovere SL/TP in modo sincrono con il prezzo.
marketeer: Quando il prezzo di un ordine pendente viene spostato con il drag'n'drop a un nuovo livello, SL/TP cambia insieme ad esso. Può essere disabilitato? Non è sempre necessario muovere SL/TP in modo sincrono con il prezzo.
Come lo vedi? Io la vedo così:
Se tieni premuto il tasto Ctrl, l'ordine pendente si muove insieme a SL/TP. Se non si preme Ctrl, si muoverà come ora.
Notate anche che nelle impostazioni del terminale, è possibile impostare la gestione dei livelli di trading solo quando si tiene premuto Alt. Poi, dovreste premere Ctrl+Alt per l'interazione descritta sopra.
Se tieni premuto il tasto Ctrl, l'ordine pendente si muove insieme a SL/TP. Se non si preme Ctrl, si muoverà come ora.
Notate anche che nelle impostazioni del terminale, è possibile impostare la gestione dei livelli di trading solo quando si tiene premuto Alt. Poi, per l'interazione descritta sopra, premete Ctrl+Alt.
È nella documentazione? Ho letto di Alt e lo uso, ma non di Ctrl.
marketeer: Quando il prezzo dell'ordine pendente viene spostato con il drag'n'drop a un nuovo livello, lo SL/TP cambia insieme ad esso. C'è un modo per disabilitarlo? Lo SL/TP non dovrebbe sempre essere spostato in modo sincrono con il prezzo.
Se può essere disabilitato, non è chiaro cosa faremo se il prezzo si muove e attraversa SL e/o TP fissi
Adottare solo (*a) per riferirsi alle funzioni membro non dà vantaggi evidenti, ma porta invece all'impossibilità di una semplice e chiara applicazione multipla degli operatori.
Prova a riscriverlo tenendo conto del tuo suggerimento
Non potete usare l'oggetto stesso al posto del puntatore perché l'operatore <<(...) può restituire solo un puntatore all'oggetto.
Devi avermi frainteso, non parlavo di disabilitare l'implementazione attuale, ma di rendere possibile anche prendere un riferimento o un puntatore a un oggetto in modo da non dipendere dai capricci del compilatore.E deciderò cosa fare in ogni caso. Se ho bisogno di un programma super-affidabile, posso facilmente farlo nel modo che hai descritto. Sì, è complicato. Ma se i metaquote introducono improvvisamente un'operazione speciale dell'operatore << per i puntatori, non ne avremo paura.
Non ho detto di proibire l'implementazione attuale. Ho chiesto di fare una possibilità aggiuntiva per prendere un riferimento o un puntatore a un oggetto, in modo da non dipendere dai capricci del compilatore.
Se (b) è un oggetto, allora la caratteristica aggiuntiva (&b) in aggiunta all'esistente GetPointer( b ) è chiara - porta la sintassi più vicina al C++.
Se (a) è un puntatore, la caratteristica aggiuntiva (*a) in aggiunta all'esistente (a) dà probabilmente un compromesso ragionevole
Da un lato si elimina una contraddizione e dall'altro non si disturba l'ordine esistenteIl compilatore permette variabili dal nome identico nei parametri e nei corpi delle funzioni all'interno dello stesso ambito
Anche se viene generato un avvertimento, non è sufficiente per un errore così difficile da trovare (in un codice grande). Almeno il compilatore C++ genera lo stesso errore nello stesso casoForse la conseguenza dell'errore precedente è che questo costrutto
Causa errore di esecuzione: file EX5 non valido (8)Chi l'ha affrontato? Come si risolve e qual è il problema? Broker Otkrytie.
Quando il prezzo di un ordine pendente viene spostato con il drag'n'drop a un nuovo livello, SL/TP cambia insieme ad esso. Può essere disabilitato? Non è sempre necessario muovere SL/TP in modo sincrono con il prezzo.
Come lo vedi? Io la vedo così:
Se tieni premuto il tasto Ctrl, l'ordine pendente si muove insieme a SL/TP. Se non si preme Ctrl, si muoverà come ora.
Notate anche che nelle impostazioni del terminale, è possibile impostare la gestione dei livelli di trading solo quando si tiene premuto Alt. Poi, dovreste premere Ctrl+Alt per l'interazione descritta sopra.
Come lo vedi? Io la vedo così:
Se tieni premuto il tasto Ctrl, l'ordine pendente si muove insieme a SL/TP. Se non si preme Ctrl, si muoverà come ora.
Notate anche che nelle impostazioni del terminale, è possibile impostare la gestione dei livelli di trading solo quando si tiene premuto Alt. Poi, per l'interazione descritta sopra, premete Ctrl+Alt.
Questo viene dalla documentazione? Ho letto di Alt e lo uso, non di Ctrl.
Quando il prezzo dell'ordine pendente viene spostato con il drag'n'drop a un nuovo livello, lo SL/TP cambia insieme ad esso. C'è un modo per disabilitarlo? Lo SL/TP non dovrebbe sempre essere spostato in modo sincrono con il prezzo.