Errori, bug, domande - pagina 2653
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Beh, STL non è una soluzione unica per tutti. Qui bisogna prestare molta attenzione ai dettagli.
Stai confondendo il morbido con il caldo.
Non è una questione di STL. Ci penserò io stesso... (se qualcuno non ce l'ha, non significa che non si possa fare in linea di principio)
Il modo più semplice per implementare tutte le funzionalità possibili con metodi astratti in una classe base o interfaccia, e nei discendenti - o implementazione o =delte.
In questo caso, è necessario passare puntatori o riferimenti dello stesso tipo ai metodi della classe base.
Anche se c'è un male inevitabile sotto forma di una tabella virtuale, ma è meglio organizzare l'architettura in modo tale che non ci siano costose ramificazioni dynamic_cast da nessuna parte.
Il metodo che hai suggerito è stato implementato prima e si basa anche sullo stesso bug:https://www.mql5.com/ru/forum/1111/page2648#comment_15015191
Il bug è nelle priorità della chiamata di funzioni ricaricate quando viene eseguita una conversione implicita di tipo per un parametro puntatore/classe.
In C++ tutto è OK, ma in MQL l'errore di compilazione"ambiguous call to overloaded function"
Una delle varianti di workaround è suggerita sopra, ma è grande e non conveniente, e non ho voglia di usarla per una dozzina di funzioni simili.
Forse c'è qualcosa di più semplice?
Sviluppatori, per favore avvisate, ci sono piani per risolvereil bug o è architettonicamente impossibile?
All'interno di una funzione template, un puntatore passato all'interno di una conversione di tipo esplicita si comporta come una classe, causando di conseguenza un errore di compilazione:
Stupido, non riesce a risolvere un semplice problema. Ho bisogno di capire che il trading è vietato durante le seguenti impostazioni di avvio dell'EA.
Questo controllo non funziona.
OrderCheck è una falsa pista. Si prega di avvisare.
Codice ANATOLI KAZHARSKI
Grazie, non avevo notato il MQL_TRADE_ALLOWED.
Stupido, non riesce a risolvere un semplice problema. Ho bisogno di capire che il trading è vietato durante le seguenti impostazioni di avvio dell'EA.
Questo controllo non funziona.
OrderCheck è una falsa pista. Si prega di avvisare.
Probabilmente la ragione è il lavoro della cache del generatore di classi template.
Il bug MT5 (build 2340) usa lo stesso codice due volte: primo passaggio - compilazione riuscita, secondo passaggio - errore di compilazione.
Apparentemente i problemi sono legati alla cache del generatore di funzioni template.
L'errore scompare se per la funzione template "void run(const T &ff)" il trasferimento per riferimento è sostituito dal trasferimento per valore"void run(const T ff)".
Bug MT5(build 2340) Errore di compilazione quando si tenta di accedere alla classe interna per un parametro template di una funzione template.