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
ho guardato i risultati della mia battaglia con il codice in stile OOP - hmmm... eccellente! ))))
Ho una domanda, ma nel mio codice, beh, tre volte esattamente, uso una costruzione come:
chiama tutti in metodi privati, ma c'è un "metodo Jedi ?" per allontanarsi nel codice sorgente da CheckPointer(m_order)==POINTER_INVALID
Sto chiedendo un po' di get / set
nessun problema speciale, ma per così dire un capriccio, o mentre la sete di conoscenza dei metodi OOP in C++ non si è ancora placata
Se la domanda è "molte lettere", allora !CheckPointer(mPtr), e se la funzione chiama, si inizializzano tutti i puntatori a NULL nel costruttore e si confrontano con esso nel codice, senza dimenticare quando si cancella ptr; ptr=NULL;
guardato i risultati della mia battaglia con il codice in stile OOP - hmmm... eccellente! ))))
Ho una domanda, ma nel mio codice, beh, tre volte esattamente, uso una costruzione come:
chiama tutti in metodi privati, ma c'è un "metodo Jedi ?" per allontanarsi nel codice sorgente da CheckPointer(m_order)==POINTER_INVALID
Sto chiedendo un po' di get / set
nessun problema particolare, ma per così dire un capriccio, o mentre la sete di conoscenza dei metodi OOP in C++ non si è ancora placata
Igor, guarda questo esempio, penso che sia quello che stai chiedendo.
Se la domanda è "molte lettere", allora !CheckPointer(mPtr), e se in una chiamata di funzione, inizializzate tutti i puntatori a NULL nel costruttore e confrontate con esso nel codice, senza dimenticare quando cancellate ptr; ptr=NULL;
Bene e questo, per lo zucchero:
Nessun problema particolare, ma per così dire un capriccio, o mentre la sete di imparare metodi OOP in C++ non si è ancora spenta.
Raccomando vivamente di inizializzare tutti i campi della classe con valori predefiniti nel costruttore. Il punto è che se volete fare questo:
void foo(){ CClass someClass; someClass.DoSomething(); }
nessuno inizializzerà i campi della vostra classe e ci saranno valori spazzatura.
E questo, per lo zucchero:
No, ho quasi rinunciato alle definizioni, semplicemente non voglio avvolgere nulla, come ho scritto un paio di settimane fa - voglio vedere il puro codice in stile OOP per ora, valutare la flessibilità e le possibilità
HH: ho appena avvolto i discendenti in define alla creazione, per non scrivere la stessa inizializzazione su 3 righe, è più facile aggiungere metodi in seguito, cioè nel codice sorgente su una riga finora
Igor, dai un'occhiata a questo esempio, penso che sia quello che stai chiedendo.
no, intendo l'equivalente in c# - operatore ?? (operatore null-join), qualcosa di simile nella logica che voglio vedere in stile C++
UPD:
Raccomando vivamente di inizializzare tutti i campi di una classe con valori predefiniti nel costruttore. Il punto è che se volete fare questo:
Se stai chiedendo una macro, nessuno inizializzerà i campi della tua classe e ci saranno valori spazzatura.
questo è quello che ho fatto, costruttore con inizializzazione di qualsiasi cosa e tutto nella classe base, i discendenti inizializzano la classe base:
è quello che ho avvolto in una macro, in modo da non dimenticare di inizializzare correttamente ))))
No, ho quasi rinunciato alle definizioni, semplicemente non voglio avvolgere nulla, come ho scritto un paio di settimane fa - voglio vedere il puro codice in stile OOP per ora, valutare la flessibilità e le possibilità
ZS: solo discendenti avvolti in define alla creazione, per non scrivere la stessa inizializzazione su 3 righe, è più facile aggiungere metodi in seguito, cioè nel codice sorgente su una riga per ora
no, intendo l'equivalente in c# - operatore ?? (operatore null-join), voglio vedere qualcosa di simile nella logica in stile C++
Il tuo rifiuto del preprocessore è vano. Insieme ai modelli sono gli strumenti più potenti. Non sembra esserci un analogo dell'operatore ?? Il C++ è più duro da questo punto di vista.
Sono ancora in una battaglia per lo stile OOP puro, voglio imparare tutte le tecniche OOP, mentre c'è una risorsa sul forum ;)
Sono al passo con il preprocessore, ma ... Penso che non dovrei abusarne, almeno, non nel mio stile, potrei sbagliare, e certamente non sarò in grado di leggere il codice con macrosostituzioni multiple, e come cercare i bug... beh, è più facile riscrivere - quindi, non ancora necessario
modelli... Beh, non mi piace quello che gli sviluppatori offrono in SB, li ho guardati tutti, è difficile dire per quale scopo sono stati inclusi in SB, forse non è ancora arrivato il loro momento
riguardo al porting dei template C++ a MQL - è tempo, come la discussione ha mostrato, che nella maggior parte dei casi i template C++ richiedono una messa a punto per MQL - è più facile tornare a .dll e non disturbare MQL ))))
Sono ancora in una battaglia per lo stile OOP puro, voglio imparare tutte le tecniche OOP, mentre c'è una risorsa sul forum ;)
Sono al passo con il preprocessore, ma ... Penso che non dovrei abusarne, almeno, non nel mio stile, potrei sbagliare, e certamente non sarò in grado di leggere il codice con macrosostituzioni multiple, e come cercare i bug... beh, è più facile riscrivere - quindi, non ancora necessario
modelli... Beh, non mi piace quello che gli sviluppatori offrono in SB, li ho guardati tutti, è difficile dire per quale scopo sono stati inclusi in SB, forse non è ancora arrivato il loro momento
riguardo al porting dei template C++ a MQL - è tempo, come la discussione ha mostrato, che nella maggior parte dei casi i template C++ richiedono una messa a punto per MQL - è più facile tornare a .dll e non disturbare MQL ))))
Puoi scrivere i template in questo modo da solo.)))
Sì ))))
Ho finito di leggere l'aiuto e ho saltato l'override, grazie al cielo tutto è in macro, le modifiche, beh, esattamente in un copia-incolla
UPD:
no, è uscito per il controllo del permesso stesso, non c'è bisogno di un metodo pubblico!
E poi c'è questo, per lo zucchero:
Volevo scrivere quello che avevo prima invece di
era così:
ma ha ricordato come controllare le sostituzioni macro in MQL
2019.09.16 22:57:42.837 tst (EURUSD,H1) a = 1
2019.09.16 22:57:42.837 tst (EURUSD,H1) POINTER_INVALID = 0
2019.09.16 22:57:42.837 tst (EURUSD,H1) NULL = 0
e se la memoria non m'inganna, all'inizio dell'anno era possibile disimpegnare NULL nel registro e ottenere 0, ora appare un errore
Cioè il comportamento NULL come se non dovrebbe cambiare in futuro, ma cosa viene sostituito lì al posto di NULL non è chiaro, probabilmente se questa situazione viene controllata ora, come scrittoif(CheckPointer(m_order)==POINTER_INVALID)) ) è così per dire il codice corretto))