Errori, bug, domande - pagina 1891
![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
Certo.
Sei sicuro? Perché dynamic_cast è più spesso usato per la conversione dal basso verso l'alto, dal genitore alla prole.
Inoltre, in MQL lancia perfettamente dal basso verso l'alto, anche quando non dovrebbe:
Date un'occhiata al frammento di codice MQL5 discusso.
Sì, non dovrebbe funzionare ed è già spiegato sopra, ma non perché il cast bottom-up sia impossibile.
Se lanciamo il puntatore dall'alto verso il basso, cioè verso il genitore, dopo di che passiamo il puntatore da qualche altra parte nello scope, i campi del discendente saranno disponibili lì?
Sì, ecco un esempio che dimostra la tua domanda:
e uscita:Per prima cosa, controlliamo il cast non risolto dal basso verso l'alto e otteniamo NULL. Questo è corretto.
Poi creiamo un oggetto CLASS2, assegniamo un riferimento ad esso alla sua classe madre (qui è importante capire che dinamicamente l'ambiente sa che il tipo originale dell'oggetto CLASS2 è memorizzato nelle sue meta-informazioni). Poi (solo la tua domanda) fare un cast dinamico (con il giusto controllo di conversione basato sulle metainformazioni dell'oggetto sorgente) dal riferimento CLASS1 a CLASS2.
Controlliamo il risultato del casting e lo scriviamo nella variabile i = 1. Infine emettiamo il valore di i, facendo riferimento all'oggetto originariamente creato.
Tutto funziona correttamente e secondo le specifiche (inclusa la specifica dynamic_cast del C++ stesso).
Sei sicuro? Perché dynamic_cast è più spesso usato per la conversione dal basso verso l'alto, dal genitore alla prole.
Inoltre, in MQL lancia perfettamente dal basso verso l'alto, anche quando non dovrebbe:
Esattamente:
Non dimenticate di aggiornare alle ultime build. Attualmente sto testando sul 1598, che è stato recentemente postato come versione zippata in questo thread, credo.
Non dimenticate di aggiornare alle ultime build.
Sì, la vecchia costruzione.
Esatto, non si può guidare dal basso verso l'alto, ma solo dall'alto verso il basso. Questo è per la sicurezza.
Sì, la vecchia costruzione.
Questa la cancellate, è fuorviante e contraddice direttamente il funzionamento di dynamic_castNell'ambito dell'esempio di fusione testa a testa CLASSE1 -> CLASSE2 sollevato, hai capito bene. Questo è il tipo di casting che la maggior parte delle volte la gente ha in testa.
Inoltre, è il "non puoi lanciare dal basso verso l'alto, solo dall'alto verso il basso" che è il cuore del controllo di sicurezza dynamic_cast.
Chi sa cosa sta facendo capisce l'essenza del dynamic_casting.
Non dimenticate di aggiornare alle ultime build. Attualmente sto testando sul 1598, che è stato recentemente postato come zip in questo thread, credo.
In quale file exe si trova il compilatore e l'esecutore?
In questo momento MT4b1080 sta eseguendo MEb1599. Per favore, spiega cosa fanno metaeditor.exe e terminal.exe.
In quale file exe si trova il compilatore e l'esecutore?
L'MT4b1080 ora sta eseguendo MEb1599. Per favore, spiega cosa fanno metaeditor.exe e terminal.exe.
Il compilatore per entrambe le piattaforme è lo stesso. È in metaeditor.exe
E l'executor, che controlla lo stesso dynamic_cast, in terminal.exe?
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2017.05.11 13:26
Perché EX5 tale codicePesa 5kb?