Bonjour,

j'obtiens une erreur dans le code suivant :
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
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
8
9
 
OPTRES Option_Call(double& _Under, double& _Strike, double& _RiskFreeRate, double& HistVol, double& Time)
{
	OPTRES	l_Res;
 
	....
 
	return l_Res;
}
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 ?

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