Adresse d'une fonction CallBack dans une classe [Résolu]

Signaler
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
-
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
-
Bonjour,

J'ai un petit souçis pour récupèrer l'adresse d'une fonction CallBack dans une classe.

MaClasse.h :
------------
class MaClasse
{
protected:
int CALLBACK FctCallBack(LPARAM lParam1,LPARAM lParam2);
typedef int __stdcall FonctionCallBack(LPARAM,LPARAM);
FonctionCallBack *fcb; // Pointeur vers fonction Callback
public:
MaClasse(); // Constructeur
virtual ~MaClasse(); // Destructeur
};

MaClasse.cpp :
--------------
MaClasse::MaClasse() // CONSTRUCTEUR
{
// Récupère adresse fonction CallBack
fcb=FctCallBack; // Erreur Compilation ICI
}

MaClasse::~MaClasse() // DESTRUCTEUR
{
}

// Fonction CallBack
int CALLBACK MaClasse::FctCallBack(LPARAM lParam1,LPARAM lParam2)
{
return 0;
}


J'ai une erreur de compilation:
error C2440: '=' : cannot convert from 'int (__stdcall MaClasse::*)(long,long)' to 'int (__stdcall *)(long,long)'
There is no context in which this conversion is possible

Je tourne en rond..après plusieurs tests de cast différents je ne m'en sors pas.
Est-il possible de récupèrer l'adresse d'une fonction CallBack dans une classe ?
Si oui quelle est la solution svp ?
Merci.

4 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ce problème a déja été traité plusieurs fois. Comme ta fonction n'est pas statique, elle prend un pointeur this implicite (convention d'appel thiscall). En fait, fcb et FctCallBack ne sont donc pas de même type.
Pour que ca marche, il faudra mettre FctCallBack en static (du coup, plus de pointeur this, et plus de problème)
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
3
Merci vecchio56,
J'avais un doute à ce sujet...je n'en ai plus maintenant.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tout va bien, tu n'a plus qu'a passer chez le dentiste ;)
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
3
lol...c'est fait !