Pointeur de Fonction

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 15 oct. 2005 à 10:41
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010 - 17 oct. 2005 à 10:14
Salut :


Mon probléme est le suivant :
Etant donné une classe


class TMyClass
{
// données membres
public :
void Fonction(int );
// autres fonctions membres
};


void (* Ptr2Member)(int);


L'affectation suivante :


Ptr2Member = TMyClass::Fonction;


est réfusée par le compilateur parce que
--> Ptr2Member a la convention d'appel __cdecl
--> Fonction a la convention d'appel __thiscall


Comment faire pour rendre l'affectation précédante valide ?


Et merci ....

3 réponses

PLUiK Messages postés 46 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 25 août 2006
15 oct. 2005 à 12:59
Il faut que la fonction soit statique (je crois):



class TMyClass

{

// données membres

public :

static void Fonction(int );

// autres fonctions membres

}
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 oct. 2005 à 14:13
Ou peut être un truc du genre
void (*TMyClass::Ptr2Member)(int);
Car tu as sans doute besoin d'une fonction non statique
0
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
17 oct. 2005 à 10:14
Voir plutôt:

void (TMyClass::*Ptr2Member)(int);
Ptr2Member = TMyClass::Function;
...
//pour l'appel:
TMyClass X,*pX;
(X.*Ptr2Member)(0);
...
pX = &X;
(pX->*Ptr2Member)(0);
0
Rejoignez-nous