Bonjour,

dans le cadre de ma thèse, je doit utiliser les fonctions présentes dans Numerical Recipes pour optimiser différentes choses.
J'ai des objets qui calculent le coût pour mes méthodes d'optimisation, et donc pour voir passer ces objets à Numerical Recipes, j'utilise un functor (je précise que c'est une première pour moi...)

J'ai donc créé une classe functor
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
class functor
{
......
public :
    DP operator()(const Vec_I_DP &) { ...}
}
Sachant que la méthode d'optimisation attend une fonction du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
DP function(const Vec_I_DP &)
Dans mon code, au moment d'appeler la méthode je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
....
functor * l_p_functor = maFrabriqueDeFunctor.getFunctor();
J'ai essayé plusieurs manières pour passer ma méthode en arguement :
powell(......,(*l_p_functor)()) => erreur par le compilateur, qui me dit que la classe n'a pas de méthode operator() donc j'essaie avec :
powell(......,(*l_p_functor)(const Vec_I_DP &)) => et là il me sort une erreur de syntaxe...

Comment je fais pour passer le pointeur d'une fonction avec des arguments ???

Merci beaucoup à tous ceux qui prendront le temps de lire ce message