Valeur d'un pointeur après boucle if/else
Bonjour à tous,
Ma question porte sur la valeur à un pointeur déclaré au début d'une portion de code, et assignée dans une boucle if/else.
La variable en question est bel et bien remplie dans les boucles, mais à la sortie elle est vide et je ne comprends pas pourquoi...
Voici un aperçu du code que j'ai implémenté. Mon but est d'assigner une valeur particulière à mon objet "my_splineCurve" en fonction des paramètres choisis par l'utilisateur :
- soit il choisi le traitement n°1 --> on applique l'algo n°1 et on retourne la valeur finale de my_splineCurve
- soit il choisi le traitement n°2 --> on applique par défaut l'algo n°2 qui assigne une valeur à my_splineCurve puis l'utilisateur a encore le choix entre 2 traitement supplémentaires (qui prennent en entrée la sortie de l'algo n°2)
- il choisi de faire en supplément le traitement n°3 --> on applique l'algo n°3 et on retourne la valeur finale de my_splineCurve
- il choisi de faire en supplément le traitement n°4 --> on applique l'algo n°4 et on retourne la valeur finale de my_splineCurve
Voici donc le code très simplifié qui correspond à ma description :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
// on a l'objet result_spline_finale que je souhaite remplir avec les boucles ci-dessous,
// puis que je souhaite ajouter à mon Vector de stockage "output_list"
my_splineCurve* result_spline_finale = new my_splineCurve();
if(traitement n°1){
my_splineCurve result_spline = fitting->algo1();
result_spline_finale=&result_spline;
}
else{ //traitement n°2
my_splineCurve result_spline_intermediaire = fitting->algo2();
result_spline_finale=&result_spline_intermediaire;
if(traitement n°3){
my_splineCurve result_spline3 = fitting->algo3(result_spline_intermediaire);
result_spline_finale=&result_spline3;
}
else if(traitement n°4){
my_splineCurve result_spline4 = fitting->algo4(result_spline_intermediaire);
result_spline_finale=&result_spline4;
} // ICI result_spline_finale est bien remplie
}
// ICI result_spline_finale n'est PAS bien remplie (valeurs indiquant un mauvais pointeur genre 321e10 )
// Ajout de result_spline_finale dans la liste des output
output->setData(result_spline_finale);
output_list.append(output);
result_spline_finale=NULL;
delete result_spline_finale; |
Une solution est de déplacer output->setData(result_spline_finale); dans les boucles, mais je préférerais le laisser à la fin (au cas où je rajoute d'autres traitements c'est plus propre il me semble)
Vos explications et commentaires sur mon code sont les bienvenus ! Et n'hésitez pas à me demander si je n'ai pas mis assez d'explications...
Merci :)