Errori, bug, domande - pagina 2661
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
Mi scuso per aver semplificato il codice al minimo, introducendo così alcune imprecisioni, in particolare:
- gli oggetti passati alla funzione hanno la stessa dimensione (codice aggiornato);
- invece dell'output muto printf("1");/printf("2"); l'interfaccia o gli interni dell'oggetto sono effettivamente accessibili direttamente, questo a sua volta non permette di inlineare due algoritmi in una singola funzione di chiamata (codice aggiornato).
Mi scuso per aver semplificato il codice al minimo, introducendo così alcune imprecisioni, in particolare:
- gli oggetti passati alla funzione hanno la stessa dimensione (codice aggiornato);
- invece dell'output muto printf("1");/printf("2"); l'interfaccia o gli interni dell'oggetto sono effettivamente accessibili direttamente, questo a sua volta non permette di inlineare due algoritmi in una singola funzione di chiamata (codice aggiornato).
O come questo:
non è l'ideale perché richiede cambiamenti nella struttura degli oggetti usati e imbratta la logica, ma funziona.
E sì, è meglio fare una funzione wrapper su test:
Poi cerca nel progetto tutte le chiamate:
Comunque, grazie mille per il vostro aiuto.
Grazie per la soluzione,
Non è l'ideale perché richiede cambiamenti nella struttura degli oggetti usati e imbratta la logica, ma funziona.
E sì, meglio fare una funzione wrapper su test:
che cercare nel progetto tutte le chiamate:
Comunque, grazie mille per il vostro aiuto.
Sì, sono d'accordo.
Difetti nel funzionamento della cache della funzione template/classe:
(non corretto da MT5 (build 2345)) ** Comportamento indefinito, si crea un oggetto complesso avvolto con tipo interno "C" più volte e si scopre che è un tipo di dati completamente diverso, forse "B", forse "int", qualunque cosa si voglia...
(non corretto da MT5 (build 2345)) * Errore di compilazione, bug sul passaggio di un puntatore di funzione come argomento const ref template.
(non corretto da MT5 (build 2345)) * Errore di compilazione, l'oggetto B<int> può essere creato dopo l'oggetto di classe B<void*>, ma si verifica un errore di compilazione se fatto prima.
Difetti nella funzione template/classe di lavoro:
(non corretto da MT5 (build 2345)) ** Errore di compilazione, bug all'interno della funzione template, il puntatore passato all'interno dell'operazione diconversione esplicita del tipo si comporta come una classe altrimenti come un puntatore.
(non corretto da MT5 (build 2345)) ** Errore di compilazione, bug con la generazione del codice della classe template mentre si usa la classe interna.
(non corretto da MT5 (build 2345)) ** Errore di compilazione, bug sul tentativo di accedere alla classe interna per il parametro template della funzione template.
(non corretto da MT5 (build 2345)) ** Errore di compilazione, bug sulla generazione di metodi/classi di template, il processo di "autocompletamento" dei parametri di template va fuori campo nel codice principale del programma.
(non corretto da MT5 (build 2345)) * Errore di compilazione, bug con assenza di autogenerazione del codice della classe modello quando la classe modello agisce come valore di ritorno per il metodo modello.
(non corretto da MT5 (build 2345)) * Errore di compilazione, bug nella definizione della classe interna - nessun riferimento allo spazio dei nomi globale quando si definisce una classe base.
(non corretto da MT5 (build 2345)) *(nuovo) Errore di compilazione, bug nel passaggio di una struct interna alla funzione template, iltipo di dati risultante non può essere usato come tipo di dati base per un'altra struct interna nella classe template.
(non corretto da MT5 (build 2345)) *(nuovo) Errore di compilazione, un bug quando si chiama una funzione template con tipi di argomenti espliciti quando viene chiamata da una funzione non template sovraccaricata.
Difetti nella mancata corrispondenza della priorità delle chiamate di funzioni sovraccaricate in MQL rispetto al C++:
(non corretto da MT5 (build 2345)) *** Errore di compilazione quando c'è un'eredità di classe A <= B <= C <= D e sono implementate due funzioni di sovraccarico, per esempio, una con parametro A* e una con parametro B*, allora passare in tale funzione un oggetto C* o D* in MQL causa un errore di compilazione "ambiguous call to overloaded function".
(non corretto da MT5 (build 2345)) ** Runtime, mismatch di priorità per le chiamate di funzioni template sovraccaricate.
(non corretto da MT5(build 2345)) **(nuovo) Errore di compilazione, la priorità delle chiamate di funzioni template sovraccaricate dipende in realtà dal tipo di parametro template, che teoricamente non dovrebbe influenzare il risultato della compilazione.
(non corretto da MT5 (build 2345)) **(nuovo) Errore di compilazione, un errore di compilazione si verifica quando si genera codice per una funzione template nonostante ci sia una funzione template sovraccaricata con una firma adatta ai parametri passati.
Suggerimenti:
reference- per permettere ai letterali e alle variabili temporanee di essere passati come argomenti const ref di una funzione.
link- quandosi spostano i file del progetto nella scheda Progetto, per i file spostabili che sono aperti e nelle schede ME, aggiorna automaticamente il loro percorso di localizzazione.
link- per introdurre la funzionalità della dichiarazione typedef in MQL.
link- circa la possibilità di forzare la generazione di costruttori di copia e operatori di assegnazione predefiniti.
Sergey Dzyublik:
Спасибо за вариант решения
il link è una copia temporanea, quindi non puoi cambiare la struttura
Il riferimento è una copia temporanea, quindi non si può cambiare la struttura
Hai ragione nel caso generale...
Ma in casi particolari è molto più complicato e infatti le strutture date sono iteratori e non è il loro contenuto che viene cambiato, ma gli oggetti a cui fanno riferimento.
Così il problema è risolto nel caso speciale e vi sono grato per questo.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
Sergey Dzyublik, 2020.03.01 12:53
Se ho capito bene, allora questa funzione restituirà il puntatore all'oggetto che non esiste?
Ho capito bene che questa funzione restituirà un puntatore a un oggetto inesistente?
Sì, in questo esempio la funzione restituirà un puntatore a un oggetto inesistente.
Lo scopo principale di questo codice è mostrare che c'è una funzionalità funzionante per una classe semplice e allo stesso tempo non ce n'è nessuna per una classe template.