[urgent] methode en parametre d'une fonction

Résolu
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 17 nov. 2004 à 14:48
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 17 nov. 2004 à 15:37
salut a tous.
bon voila mon probleme. j'ai une classe et je voudrais passer une de ses fonctions membre en parametre de fonction pour effectuer différents traitements.

bon pour aller par l'exemple, ce qui me permettra de comprendre plus facilement au final et qui vous permettra de repondre plus vite:

classe Test
{
public:
void Fonction (void);
}

je veux pouvoir faire:
main
{
Test T;
F (Fonction, T);

}

quel doit etre le prototype de F et comment ecrire l'appel précisément? merci d'avance

4 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 nov. 2004 à 15:02
class MyClass
{
public :
int MyFct(int a, int b)
{return a+b;}
};

typedef int (MyClass::*PFN)(int, int);

int main()
{
PFN pfn = MyClass::MyFct;

MyClass myObj;

(myObj.*pfn)(2, 5);

return 0;
}
3
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 nov. 2004 à 15:05
pour reprendre l'exemple avec la fonction :

struct Test
{

void Fonction()
{
}

};

namespace
{

void F( void(Test::*pFonction)(), Test T )
{
}

}

int main()
{
Test T;
F( &Test::Fonction, T );
}
3
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 nov. 2004 à 15:29
bah.....a vrai dire ca marche pas djl....
bon voila mon code (ca sera un peu plus lourd mais bon....)

proto:
typedef void(CInfoProcess::*Affichage)(void);
char CaseDetail (vector <CInfoProcess> & VInfo, unsigned PID, Affichage F);

appel:
Cmd = CaseDetail (VInfo, PID, &CInfoProcess::AfficheDetail);
ou
Cmd = CaseDetail (VInfo, PID, CInfoProcess::AfficheDetail);

ou est ce que je me suis déchiré?
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 nov. 2004 à 15:37
bon ca compile, j'avais oublié le const a la fin paske mes focntionsd membres sont const, merci a vous 2, la complement de vos deux reponses m'ai permis de faire marcher tout ca
0
Rejoignez-nous