Bonjour

Voici mon probl�me (qui n'est pas courant et apr�s de nombreuses recherches infructueuses je me permet de poster ici) :

j'ai une fonction dans une classe qui attend comme un argument un pointeur de fonction.

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
 
typedef void (*pf)(X*, Y*); // la définition du pointeur de fonction (X et Y sont deux classes quelconques)
 
class CControl;
...
 
CControl::setFunction(pf uneFonction) // prend en argument un pointeur de fonction
{
...
}
L'appel de cette fonction est le suivant :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
    AControl->setFunction(Form1->ControlEvent); // Form1->ControlEvent est une fonction correcte sauf qu'elle est dans une classe
L'objet Form1 est de type CForm1 qui est une classe d�finit par l'utilisateur et comprend une fonction ControlEvent dont la signature correspond a pf
(sauf que la fonction �tant dans une classe ce n'est plus la m�me signature et la est le probl�me n'est-ce pas ?)

La question est comment transformer cette fonction membre en une fonction pour �tre utilis� dans l'appel.

En gros �a doit etre un peu comme dans la STL avec for_each quand on utilise mem_fun mais je ne comprend pas comment proc�der.
J'avais essay� l'appel comme ceci:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
    AControl->setFunction(mem_fun(&CForm1::Button1OnClick));
et j'obtient le message d'erreur suivant : "Could not find a match for 'mem_fun<S,T,A>(void (CForm1::*)(X*,Y *))'"

(Mon compilateur est Borland C++ 5.5 en ligne de commande sous windows XP.)

J'esp�re avoir �t� clair (meme si j'en ai pas trop l'impression )
Merci d'avance et n'h�sitez pas � me demander des �claircissements sur le code