Bonjour,
Je viens d'experimenter une erreur qui me parait completement absurde et pour le moins incompréhensible.
Le cas d'erreur est le suivant:
je déclare 2 pointeurs vers des string (de la librairie standard) dans les attributs publics d'une classe:
Lorsque je défini le constructeur, j'initialise ces pointeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Simulation { public: string* chaine1; string* chaine2; ... }
Je ne fais rien d'autre avec ces chaines, je ne les utilise même pas par la suite. Le simple fait d'initialiser 2 chaines consécutivement me produit une erreur lors de l'execution du programme!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Simulation::Simulation() { chaine1 = new string(); chaine2 = new string(); }
Je précise consécutivement, car lorsque je n'initialise qu'une classe à la fois, aucune erreur ne se produit, par exemple:
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Simulation::Simulation() { chaine1 = new string(); //chaine2 = new string(); }
marchent!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Simulation::Simulation() { //chaine1 = new string(); chaine2 = new string(); }
Je déteste ce genre d'erreur qui ont le don de vous rendre dingue, si quelqu'un peut voir d'ou cela vient ca m'arrangerait ne serait ce que pour comprendre car la ca me dépasse!
Partager