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.
L'appel de cette fonction est le suivant :
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'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
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
(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:
et j'obtient le message d'erreur suivant : "Could not find a match for 'mem_fun<S,T,A>(void (CForm1::*)(X*,Y *))'"
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 AControl->setFunction(mem_fun(&CForm1::Button1OnClick));
(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
Partager