Pointeur de Fonction

Signaler
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010
-
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

Messages postés
46
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
25 août 2006

Il faut que la fonction soit statique (je crois):



class TMyClass

{

// données membres

public :

static void Fonction(int );

// autres fonctions membres

}
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
9
Ou peut être un truc du genre
void (*TMyClass::Ptr2Member)(int);
Car tu as sans doute besoin d'une fonction non statique
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Voir plutôt:

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