OOP, modelli e macro in mql5, sottigliezze e usi - pagina 20

 
Come faccio a rimuovere il limite di 8 elementi nel numero di argomenti macro, mi mancano 8 elementi?
 
Seric29:
Come faccio a rimuovere il limite di 8 elementi nel numero di argomenti macro, mi mancano 8 elementi?

Una macro in una macro dovrebbe essere scritta.

Perché non scrivere semplicemente delle funzioni?

 

c'è un modo per rimuovere/eliminare il modificatore const con una macro? e disabilitarlo quando necessario?

ZS: c'è un codice:

class COrder {
private:
//--- const to send order
   const int         c_cmd;
   const double      c_volume;
   double            c_price;
   const int         c_magic;
   const int         c_stoploss;
   const int         c_takeprofit;
}

ha deciso di scrivere in un file i campi di una classe, e ripristinare da un file attraverso il costruttore, ma il modificatore const interferirà con questo

il codice è quasi finito, in teoria posso eliminare tutte le cost, ma... Ma non voglio perdere l'opportunità di ulteriori modifiche, e const è molto utile durante le modifiche del codice

 
Igor Makanu:

è possibile utilizzare una macro per rimuovere/eliminare il modificatore const? e disabilitarlo quando necessario?

#define const
 
fxsaber:

Hmm, così semplice?!

come posso limitare la sezione del codice sorgente dove voglio applicare la macro?

 
Igor Makanu:

come posso limitare l'area del codice sorgente dove voglio applicare questa macro?

#undef const
 
Igor Makanu:

c'è un modo per rimuovere/eliminare il modificatore const usando una macro? e disabilitarlo quando necessario?

ZS: c'è un codice:

ha deciso di scrivere in un file i campi di una classe, e ripristinare da un file attraverso il costruttore, ma il modificatore const interferirà con questo

il codice è quasi finito, in teoria posso eliminare tutte le cost, ma... Ma non voglio perdere l'opportunità di ulteriori modifiche, e const è molto utile durante le modifiche del codice

Qual è l'idea? Ovunque c_cmd è una costante e una funzione non è una costante? Se è così, è UB (sì μl non permette di farlo), bene lì a causa di segmenti di sola lettura, ottimizzazioni del compilatore ...

 
fxsaber:

Hmm, di nuovo semplice.

GRAZIE!

Vittoria:

Qual è l'idea? C_cmd è una costante ovunque e una funzione non è una costante? Se è così, è UB (sì μl non permette di farlo), bene lì a causa di segmenti di sola lettura, ottimizzazioni del compilatore ...

Ho deciso di salvare tutti i campi di 2 classi con tutte le impostazioni e lo stato attuale quando si effettua un nuovo ordine (TS multiordine).


Ho deciso di usare una struttura separata con campi per nomi di campo delle classi da salvare - questo sarà un 2 minuti di copia nell'editor)), e sarebbe conveniente salvarli con una singola chiamata di FileWriteStruct()

e per ripristinare lo stato userò questo costruttore per esempio:

COrder::COrder(SRecovery &property)
:  c_cmd(property.c_cmd),
   c_volume(property.c_volume),
   c_price(property.c_price),
   c_magic(property.c_magic),
   c_stoploss(property.c_stoploss),
   c_takeprofit(property.c_takeprofit)
{

}

in questa chiamata al costruttore, i campi costanti possono essere inizializzati

il ripristino dei dati è necessario solo per ricaricare il terminale

Non l'ho ancora fatto, ma sono sicuro al 99% che funzionerà senza problemi - non volevo introdurre un nuovo tipo di dati (struttura di memorizzazione) - ma sarà più facile e potrò leggere il codice più tardi....commento non è nostro da scrivere - ))))

 
Igor Makanu:

Hmm, di nuovo semplice.

GRAZIE!

Ho deciso di salvare tutti i campi di 2 classi con tutte le impostazioni e gli stati attuali in essi quando si effettua un nuovo ordine (TS multiordine).


Ho deciso di usare una struttura separata con campi per nomi di campo delle classi da salvare - mi basta copiare la struttura in 2 minuti nell'editor)), ed è conveniente salvare i campi con una sola chiamata di FileWriteStruct()

e per ripristinare lo stato userò questo costruttore per esempio:

in questa chiamata al costruttore, i campi costanti possono essere inizializzati

il ripristino dei dati è necessario solo per ricaricare il terminale

Non l'ho ancora fatto, ma sono sicuro al 99% che funzionerà senza problemi - non volevo introdurre un nuovo tipo di dati (struttura di memorizzazione) - ma sarà più facile e potrò leggere il codice più tardi....commenti non sono nostri da scrivere - ))))

Se non volete creare una struttura temporanea per la scrittura, provate a scrivere i campi nel file uno per uno e poi a leggerli dal costruttore nello stesso modo. Non è necessariamente più veloce, ma il codice sarà sicuramente più "brutto".
 
fxsaber:
Sbagliato. Ha bisogno di una controparte const_cast, che non ha.