![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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 constructeur par défaut a un but spécifique pour initialiser un tableau d'objets de sa classe. Un constructeur dont tous les paramètres sont définis par défaut n' estpas un constructeur par défaut. Tut.
J'ai souligné un oubli en rouge.
Au fait, pourquoi un tel constructeur n'est-il pas un constructeur par défaut ? Une autre béquille ?
Le constructeur par défaut a un but spécifique pour initialiser un tableau d'objets de sa classe. Un constructeur dont tous les paramètres sont définis par défaut n' estpas un constructeur par défaut. Ici
"Accès à un pointeur non valide" =="Tentative d'accès à un pointeur non valide" ?
C'est souvent le signe direct d'une mauvaise main ou d'un manque de compréhension des principes de base du travail avec les pointeurs.
Moins souvent un signe d'utilisation de classe mal documentée.
Au fait, pourquoi ce constructeur n'est-il pas un constructeur par défaut ? Une autre béquille ?
C'est tout le contraire. La béquille consiste à avoir des paramètres par défaut, car c'est une source de bogues difficiles à trouver. C'est là que nous sommes stricts.
Si vous écrivez un constructeur avec des paramètres, vous pouvez également écrire un constructeur sans paramètre. Et si vous avez un constructeur par défaut, vous ne pouvez pas écrire un constructeur paramétrique avec tous les paramètres par défaut.
C'est une béquille que d'avoir des paramètres par défaut, car c'est une source de bogues difficiles à attraper.
Oui, mais je ne peux pas penser à de telles situations.
Et s'il existe un constructeur par défaut, vous ne pouvez pas écrire un constructeur paramétrique avec tous les paramètres par défaut.
J'ai lu sur l'opération de résolution du contexte ( :: : ). J'ai décidé d'essayer de l'utiliser dans deux classes sans rapport :
Le compilateur donne une erreur sur la ligne C_A::funcA(j). Si je le commente, cela semble fonctionner. Quelle est mon erreur ?
J'ai lu sur l'opération de résolution du contexte ( :: : ). J'ai décidé d'essayer de l'utiliser dans deux classes sans rapport :
Le compilateur donne une erreur sur la ligne C_A::funcA(j). Si je le commente, cela semble fonctionner. Quelle est mon erreur ?
Dans votre cas, le contexte de la classe C_A n'est pas disponible pour la classe C_B.
C'est seulement correct si :
Mais c'est possible :
En général, ces appels sont utilisés pour les méthodes surchargées:
A peu près comme ça.
Dans votre cas, le contexte de la classe C_A n'est pas disponible pour la classe C_B.
J'essaie de transmettre les valeurs des membres d'une classe à une autre "par référence" et en utilisant un descripteur. Les deux options semblent fonctionner. Voici le schéma le plus simple :
Laquelle de ces deux méthodes est la plus rapide ? Lequel est le plus préférable ?
J'essaie de transmettre les valeurs des membres d'une classe à une autre "par référence" et en utilisant un descripteur. Les deux variantes semblent fonctionner. Voici le schéma le plus simple :
Laquelle de ces deux méthodes est la plus rapide ? Lequel est le plus préférable ?
Les questions sont-elles vraiment lourdes/incorrectes ?
Pendant longtemps, j'ai utilisé la première méthode ("suivre le lien"), mais j'aime beaucoup l'idée des descripteurs. Je ne sais pas si ça vaut la peine de réécrire toutes les classes à cause de ça.