Bonjour,
j'obtiens une erreur dans le code suivant :
Où Option_Call est une fonction qui renvoie un OPTRES :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 OPTRES* g_OptPty = NULL; ... g_OptPty = &Option_Call(...); delete g_OptPty
Ce code compile, mais plante au delete. Je n'arrive pas à me convaincre du pourquoi le delete n'a pas sa place ici ; c'est donc que je ne comprend pas bien ce qui se passe : pourriez-vous m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 OPTRES Option_Call(double& _Under, double& _Strike, double& _RiskFreeRate, double& HistVol, double& Time) { OPTRES l_Res; .... return l_Res; }
Autre chose, je souhaite que mon code soit aussi rapide que possible, et donc réalise le moins de création/destructions d'objets et accès en écriture (d'où le passage par références). J'ai donc choisi de déclarer g_OptPty comme un pointeur dans le main pour ne pas allouer un objet inutilement, mais en échange, j'aurais un accès mémoire à chaque fois que j'accéderai à un membre.
De même, la fonction Option_Call crée un objet OPTRES à l'intérieur, puis le renvoie. Mais est-ce la meilleure solution ? Ne devrais-je pas passer un argument supplémentaire (genre pOut), par référence, et travailler dessus ?
Bref, dans l'optique adoptée, quelles sont les techniques utilisées en pratique ? Que feriez-vous ?
Merci
Cordialement
Partager