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 : 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;
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