Un costruttore di default ha uno scopo specifico nell'inizializzare un array di oggetti della sua classe. Un costruttore i cui parametri hanno tutti valori predefiniti non è un costruttore di default. Mostriamo questo con un esempio:
//+------------------------------------------------------------------+//| Класс с конструктором по умолчанию |//+------------------------------------------------------------------+class CFoo
{
datetime m_call_time; // время последнего обращения к объектуpublic:
//--- конструктор с параметром, имеющем значение по умолчанию, не является конструктором по умолчанию
CFoo(constdatetime t=0){m_call_time=t;};
//--- конструктор копирования
CFoo(const CFoo &foo){m_call_time=foo.m_call_time;};
string ToString(){return(TimeToString(m_call_time,TIME_DATE|TIME_SECONDS));};
};
Per facilitare la lettura e la scrittura del codice, è permesso l'overloading di alcune operazioni. L'operatore di sovraccarico è scritto con laparola chiave operator. Il sovraccarico delle seguenti operazioni è permesso:
Tapochun: Grazie per la risposta, è esattamente quello che ho fatto ora. Apparentemente perché la costruzione grafica è DRAW_NONE e l'indicatore è in una finestra separata, le due proprietà di costruzione si sovrappongono, il che fa scomparire i dati nella sottofinestra. Ma se usiamo INDICATOR_CALCULATIONS, i dati dei buffer 1 e 2 non saranno mostrati nella finestra dei dati, ma si può accedere ad essi dall'EA. Dovremo sacrificare la finestra dei dati)
Non si tratta di DRAW_NONE. I tuoi dati del buffer differiscono di tre ordini di grandezza, quindi il MACD non è visibile rispetto al prezzo (in scala). Però è sullo schermo))
Dopo l'ultimo aggiornamento del terminale (986, 26 settembre 2014) USDCHF e USDRUR hanno iniziato ad apparire da soli in Market Watch. Lo disinstallo e dopo un po' riappare. Perché?
Dima_S: Non si tratta di DRAW_NONE. I tuoi dati del buffer sono tre ordini di grandezza diversi, quindi il MACD non è semplicemente visibile rispetto al prezzo (in scala). Però è sullo schermo))
Grazie mille. Questa è un'informazione molto preziosa per me! Infatti, tutto è logico! È un peccato che gli articoli sulla proporzionalità dei prezzi nei buffer e la visualizzazione in una sottofinestra non abbiano informazioni (anche se forse non l'ho notato io stesso).
Il costruttore di copie e l'operatore di assegnazione sono previsti in futuro?
Il costruttore di copie è menzionato nell'aiuto a https://www.mql5.com/ru/docs/basis/types/classes
Un costruttore di default ha uno scopo specifico nell'inizializzare un array di oggetti della sua classe. Un costruttore i cui parametri hanno tutti valori predefiniti non è un costruttore di default. Mostriamo questo con un esempio:
operatore di assegnazione previsto in qualsiasi futuro?
C'è un sovraccarico su https://www.mql5.com/ru/docs/basis/function/operationoverload.
Per facilitare la lettura e la scrittura del codice, è permesso l'overloading di alcune operazioni. L'operatore di sovraccarico è scritto con laparola chiave operator. Il sovraccarico delle seguenti operazioni è permesso:
Mi dispiace di essere stato impreciso e di essere stato vago su ciò che volevo fare.
Конструктор копирования и оператор присваивания вообще планируются хоть в каком-то будущем???
La classe di base A ha 15 campi, da essa due discendenti B e C - ognuno ha +5 campi in più.
E il resto è una ricerca di 20 minuti.
Volevo chiedere dei costruttori di copieimplicite e degli operatori di assegnazione.
Se ci sono e non ho ancora capito come usarli, per favore ficcate il naso (ve ne sarei grato).
Conosco icostruttori di copie esplicitee gli operatori di assegnazione, e li housati ,
Ma ho perso molto tempo, come mi sembra(avevo molti campi, molto più che nell'esempio),
anche se ho usato il modo migliore per implementarlo (riutilizzando il codice della classe base).
Mi scuso per essere stato impreciso e per aver formulato in modo approssimativo quello che volevo.
Volevo chiedere dei costruttori di copieimplicite e degli operatori di assegnazione.
Quindi ho sbagliato e la risposta sopra era corretta.
Sì, lo faremo, ma non è ancora nei nostri piani immediati.
Grazie per la risposta, è esattamente quello che ho fatto ora. Apparentemente perché la costruzione grafica è DRAW_NONE e l'indicatore è in una finestra separata, le due proprietà di costruzione si sovrappongono, il che fa scomparire i dati nella sottofinestra. Ma se usiamo INDICATOR_CALCULATIONS, i dati dei buffer 1 e 2 non saranno mostrati nella finestra dei dati, ma si può accedere ad essi dall'EA. Dovremo sacrificare la finestra dei dati)
Non si tratta di DRAW_NONE. I tuoi dati del buffer sono tre ordini di grandezza diversi, quindi il MACD non è semplicemente visibile rispetto al prezzo (in scala). Però è sullo schermo))
Costruzione MT4 711
Lo script apre due nuovi grafici ed esegue altri 2 script su di essi.
Circa una volta su 10 esecuzioni si blocca (non vedo uno schema):
Da cosa potrebbe provenire? Cosa significa 6 in "Invalid EX4 file (6)"?
Grazie.
Costruzione MT4 711
Lo script apre due nuovi grafici ed esegue altri 2 script su di essi.
Circa una volta su 10 esecuzioni si blocca (non vedo lo schema):
Da cosa potrebbe provenire? Cosa significa 6 in "Invalid EX4 file (6)"?
Grazie.
Stiamo indagando su un problema simile - in esecuzione con un file di configurazione. A volte l'EA non parte con sintomi simili.
Non abbiamo ancora trovato la causa. Non appena lo troviamo, lo sistemiamo subito.
Stiamo indagando su un problema simile: l'avvio con un file di configurazione. A volte l'EA non parte con sintomi simili.
Non abbiamo ancora trovato la causa. Non appena lo troveremo, lo sistemeremo
Un piccolo ritardo tra le chiamate di funzione per avviare gli scriptSleep(50) mi ha aiutato;
Forse il problema è che diversi thread accedono allo stesso programma allo stesso tempo per caricarlo
Inserisci mutex))