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 :
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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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![]()
Partager