Bonjour,

Je débute avec les foncteurs et j'aimerais un coup de main pour le problème suivant :

Une classe que j'utilise (moveset) attend des pointeurs de fonctions en argument du constructeur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
moveset(particle (*pfInit)(rng*),
	      void (*pfNewMoves)(long, particle &, rng*),
	      int (*pfNewMCMC)(long, particle &, rng*));
J'aimerais lui passer des foncteurs que j'ai créé, avec l'opérateur () ayant les même paramètres et sorties que les pointeurs de fonctions attendus.

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
class FuncInitialize
    {
    public:
      particle operator () (rng *pRng);
    };
 
class FuncMove
    {
    public:
      void operator () (long lTime, particle & lastParticle, rng *pRng);
    };
 
FuncInitialize fInitialize;
FuncMove fMove;
 
moveset my_move_set(&fInitialize, &fMove, NULL);
Le compilateur refuse car le foncteur n'est pas reconnu comme pointeur de fonction.

Merci de votre aide