OOP, templates et macros dans mql5, subtilités et utilisations - page 20

 
Comment supprimer la limite de 8 éléments dans le nombre d'arguments de la macro, il me manque 8 éléments ?
 
Seric29:
Comment supprimer la limite de 8 éléments dans le nombre d'arguments de la macro, il me manque 8 éléments ?

Une macro dans une macro doit être écrite.

Pourquoi ne pas simplement écrire des fonctions ?

 

Existe-t-il un moyen d'enlever/supprimer le modificateur const avec une macro ? et de le désactiver quand c'est nécessaire ?

ZS : il y a un code :

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;
}

j'ai décidé d'écrire dans un fichier les champs d'une classe, et de les restaurer à partir d'un fichier via le constructeur, mais le modificateur const va interférer avec cela

le code est presque terminé, en théorie je peux supprimer toutes les constantes, mais... Mais je ne veux pas perdre une occasion de modification ultérieure, et const est très utile lors des modifications de code.

 
Igor Makanu:

est-il possible d'utiliser une macro pour supprimer/supprimer le modificateur const ? et de le désactiver lorsque cela est nécessaire ?

#define const
 
fxsaber:

Hmm, aussi simple que ça ? !

comment limiter la section du code source où je veux appliquer la macro ?

 
Igor Makanu:

comment limiter la zone du code source où je veux appliquer cette macro ?

#undef const
 
Igor Makanu:

Existe-t-il un moyen de supprimer/supprimer le modificateur const à l'aide d'une macro ? et de le désactiver lorsque cela est nécessaire ?

ZS : il y a un code :

j'ai décidé d'écrire dans un fichier les champs d'une classe, et de les restaurer à partir d'un fichier via le constructeur, mais le modificateur const va interférer avec cela

le code est presque terminé, en théorie je peux supprimer toutes les constantes, mais... Mais je ne veux pas perdre une occasion de modification ultérieure, et const est très utile lors des modifications de code.

Quelle est l'idée ? Partout c_cmd est une constante et une fonction n'est pas une constante ? Si oui, c'est UB (oui μl ne permettra pas de le faire), bien là à cause des segments en lecture seule, des optimisations du compilateur....

 
fxsaber:

Hmm, encore simple.

MERCI !

Vict :

Quelle est l'idée ? Est-ce que c_cmd est une constante partout et une fonction n'est pas une constante ? Si oui, c'est UB (oui μl ne permettra pas de le faire), bien là à cause des segments en lecture seule, des optimisations du compilateur....

J'ai décidé de sauvegarder tous les champs de 2 classes avec tous les paramètres et les états actuels dans ces champs lors de la passation d'une nouvelle commande (TS multi-commandes).


J'ai décidé d'utiliser une structure séparée avec des champs par noms de classes à sauvegarder - je vais juste copier la structure en 2 minutes dans l'éditeur))), et il est pratique de sauvegarder les champs avec un seul appel de FileWriteStruct()

et pour restaurer l'état je vais utiliser ce constructeur par exemple :

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)
{

}

dans cet appel au constructeur, les champs constants peuvent être initialisés

La restauration des données n'est nécessaire que pour recharger le terminal.

Je ne l'ai pas encore fait, mais je suis sûr à 99% que cela fonctionnera sans problème - je ne voulais pas introduire un nouveau type de données (structure de stockage) - mais ce sera plus facile et je pourrai lire le code plus tard....commentaire n'est pas à nous d'écrire - ))))

 
Igor Makanu:

Hmm, encore simple.

MERCI !

J'ai décidé de sauvegarder tous les champs de 2 classes avec tous les paramètres et les états actuels dans ces champs lors de la passation d'une nouvelle commande (TS multi-commandes).


J'ai décidé d'utiliser une structure séparée avec des champs par noms de classes à sauvegarder - je vais juste copier la structure en 2 minutes dans l'éditeur))), et il est pratique de sauvegarder les champs avec un seul appel de FileWriteStruct()

et pour restaurer l'état je vais utiliser ce constructeur par exemple :

dans cet appel au constructeur, les champs constants peuvent être initialisés

La restauration des données n'est nécessaire que pour recharger le terminal.

Je ne l'ai pas encore fait, mais je suis sûr à 99% que cela fonctionnera sans problème - je ne voulais pas introduire un nouveau type de données (structure de stockage) - mais ce sera plus facile et je pourrai lire le code plus tard....comments are not ours to write - ))))

Si vous ne voulez pas créer une structure temporaire pour l'écriture, essayez d'écrire les champs dans le fichier un par un, puis de les lire depuis le constructeur de la même manière. Ce n'est pas nécessairement plus rapide, mais le code sera certainement plus "laid".
 
fxsaber:
Faux. Il a besoin d'une contrepartie const_cast, qu'il n'a pas.
Raison: