Erreurs, bugs, questions - page 1034
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Le C++ n'est pas considéré de cette façon.
Oui, le C++ ne compte pas beaucoup de choses, mais le fait est que l'initialisation des membres statiques n'est probablement pas dans l'ordre dans lequel ils sont initialisés, mais dans l'ordre dans lequel ils sont déclarés.
Je vais devoir lire la norme sur ce sujet.
https://www.mql5.com/ru/docs/basis/variables/initialization
Je l'ai fait trop facile - je n'ai pas déplacé la constante - comme vous pouvez le voir maintenant tout est clair - une constante est initialisée par une autre :
Le compilateur indique comme une erreur que le membre s1 est protégé. Si nous remplaçons protected par public, tout fonctionne comme sur des roulettes. Mais le fait d'être protégé n'a rien à voir avec l'ordre d'initialisation ou l'ordre d'affectation, ni avec la possibilité d'initialisation avec une valeur particulière...
Je vais devoir lire la norme à ce sujet.
Je suis d'accord, en général le compilateur n'est pas le même que le compilateur et vous devez faire le tri.
Voici un autre exemple
Le compilateur MQL ici ne veut pas initialiser le tableau avec la valeur const int (enum - passes)
Encore une fois, je fais appel au fait que le C++ le copie et l'initialise correctement.
Probablement une erreur dans la séquence d'appel
En C++, l'ordre d'évaluation des opérandes d'une expression est UB. Pourquoi vous basez-vous sur un ordre spécifique ici ?
a été affiché comme "mot Bonjour" ?
C'est ce qui se passe dans ce cas pour un opérateur surchargé pour le type int, alors que pour le type string tout est sorti normalement.
De plus, cela n'a rien à voir avec le C++. Supposons que vous ayez écrit dans votre code
Et vous avez ces fonctions exécutées dans l'ordre inverse ou du tout pour différents types d'arguments - dans un ordre arbitraireSalutations !
Aidez-moi à réparer le problème d'accès aux pointeurs invalides.
Dans OnInit() nous avons :
SymbolsCollection = new CSymbolsCollection(); SymbolsCollection.RefreshRealSymbols();
La méthodeCSymbolsCollection::RefreshRealSymbols() comporte un appelCleanSymbolsArray(myRealSymbols);
Ces méthodes et variables sont déclarées dans la classe comme :
Le problème est queRefreshRealSymbols() s'exécute normalement s'il est appelé dans le constructeur deCSymbolsCollection.
Cependant, l'appel de SymbolsCollection.RefreshRealSymbols() ; dans OnInit() ; a pour résultat :
L'erreur pointe vers la ligne CleanSymbolsArray(myRealSymbols) ; dans le corps de la méthode CSymbolsCollection::RefreshRealSymbols(), la position est juste après la parenthèse ouvrante.
Des idées ?
...
Des idées ?
Avez-vous déjà vu la sortie du mot "Hello" ?
Relisez attentivement ce que je vous ai écrit. Un calcul, pas un résultat.
Il s'agit d'une expression i += ++i +++.