Veuillez nous indiquer s'il s'agit ou non d'un comportement correct, lorsque la séquence d'initialisation des champs d'un objet structure/classe dépend de l'arrangement mutuel des champs et non des entrées après le constructeur ?
struct A
{
int Count;
A() : Count(0) {}
};
struct B : public A
{
int i, j; // Единственная строка, отличающая от C.
B() : i(this.Count++), j(this.Count++) {}
};
struct C : public A
{
int j, i; // Единственная строка, отличающая от B.
C() : i(this.Count++), j(this.Count++) {}
};
voidOnStart()
{
B b;
Print(b.i); // 0Print(b.j); // 1
C c;
Print(c.i); // 1Print(c.j); // 0
}
On s'attendait à ce que l'initialisation se fasse de gauche à droite, comme spécifié dans le constructeur.
C() : i(this.Count++), j(this.Count++) {}
Mais il s'est avéré que l'initialisation se fait de haut en bas par champs. Et la séquence d'initialisation spécifiée après le constructeur n'est pas importante. Est-ce correct ?
fxsaber #: Veuillez me dire si c'est le bon comportement ou non, où la séquence d'initialisation des champs d'un objet structure/classe dépend de l'arrangement mutuel des champs et non pas des entrées après le constructeur ?
On s'attendait à ce que l'initialisation se fasse de gauche à droite, comme spécifié dans le constructeur.
Mais il s'est avéré que l'initialisation se fait de haut en bas par champs. Et la séquence d'initialisation spécifiée après le constructeur n'est pas importante. Est-ce correct ?
Pourquoi les développeurs écrivent-ils une aide aussi détaillée si personne ne la lit de toute façon ? Je suggère de simplifier l'aide en une phrase : Demandez sur le forum - ils vous aideront !
Pourquoi les développeurs écrivent-ils une aide aussi détaillée si personne ne la lit de toute façon ? Je propose de simplifier l'aide en une phrase : Demandez sur le forum - ils vous aideront !
Lorsque le schéma de la réponse à une question dans l'aide sera clair, j'aurai moins souvent recours à l'aide du forum.
Lorsque j'aurai compris le principe de trouver la réponse à la question dans l'aide, j'utiliserai moins souvent le forum.
Dans "Types de données" -> "Structures et classes".
Dans la liste d'initialisation, les membres peuvent aller dans n'importe quel ordre, mais tous les membres de la classe seront initialisés selon l'ordre de leur déclaration.
Dans "Types de données" -> "Structures et classes", lire
Dans la liste d'initialisation, les membres peuvent être placés dans n'importe quel ordre, mais tous les membres de la classe seront initialisés dans l'ordre dans lequel ils sont déclarés.
Merci. Malheureusement, il n'est pas toujours évident de savoir où et comment chercher.
J'ai trouvé une chose très désagréable dans le travail des indicateurs (MT5 et MT4). Les événements bloquent le travail du timer. Il n'y a rien de tel dans Expert Advisor. Une fois de plus, je suis convaincu qu'il n'est pas judicieux d'utiliser des indicateurs lorsqu'un travail stable du timer est nécessaire. C'est particulièrement vrai pour les interfaces réactives.
Voici un indicateur qui illustre ce problème, où le minuteur est réglé sur 20 millisecondes et où le temps entre les événements du minuteur est affiché s'il dépasse 100 millisecondes.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
C'est un résultat intéressant.
Il est étrange qu'il n'ait pas encore été corrigé :
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bugs, bugs, questions
A100, 2020.08.01 05:42
Erreur pendant l'exécution :Result: OnStart::unnamed#00000216656562DC80::f<ulong>
Attendu : OnStart::f<ulong>
Limitation du compilateur.
Il s'agit d'un défaut évident - je pense que le compilateur devrait déjà faire appel à une équipe médicale pour ce type de code
Il est hypothétiquement possible d'imaginer des parenthèses dans des macros imbriquées dans une telle quantité, mais pas des parenthèses frisées.On s'attendait à ce que l'initialisation se fasse de gauche à droite, comme spécifié dans le constructeur.
Mais il s'est avéré que l'initialisation se fait de haut en bas par champs. Et la séquence d'initialisation spécifiée après le constructeur n'est pas importante. Est-ce correct ?
Veuillez me dire si c'est le bon comportement ou non, où la séquence d'initialisation des champs d'un objet structure/classe dépend de l'arrangement mutuel des champs et non pas des entrées après le constructeur ?
On s'attendait à ce que l'initialisation se fasse de gauche à droite, comme spécifié dans le constructeur.
Mais il s'est avéré que l'initialisation se fait de haut en bas par champs. Et la séquence d'initialisation spécifiée après le constructeur n'est pas importante. Est-ce correct ?
Pourquoi les développeurs écrivent-ils une aide aussi détaillée si personne ne la lit de toute façon ? Je suggère de simplifier l'aide en une phrase : Demandez sur le forum - ils vous aideront !
Pourquoi les développeurs écrivent-ils une aide aussi détaillée si personne ne la lit de toute façon ? Je propose de simplifier l'aide en une phrase : Demandez sur le forum - ils vous aideront !
Lorsque le schéma de la réponse à une question dans l'aide sera clair, j'aurai moins souvent recours à l'aide du forum.
Lorsque j'aurai compris le principe de trouver la réponse à la question dans l'aide, j'utiliserai moins souvent le forum.
Merci. Malheureusement, il n'est pas toujours évident de savoir où et comment chercher.
Je vous remercie. Malheureusement, il n'est pas toujours évident de savoir où et comment chercher.
J'ai trouvé une chose très désagréable dans le travail des indicateurs (MT5 et MT4).
Les événements bloquent le travail du timer.
Il n'y a rien de tel dans Expert Advisor.
Une fois de plus, je suis convaincu qu'il n'est pas judicieux d'utiliser des indicateurs lorsqu'un travail stable du timer est nécessaire. C'est particulièrement vrai pour les interfaces réactives.
Voici un indicateur qui illustre ce problème, où le minuteur est réglé sur 20 millisecondes et où le temps entre les événements du minuteur est affiché s'il dépasse 100 millisecondes.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Nouvelle version de MetaTrader 5 build 3490 : version mobile du terminal web et nouvelles méthodes de matrice dans MQL5
Ilyas, 2022.10.18 10:12 AM
Réflexion sur l'ajout de classes/structures pour les objets