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

Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
- - Dernière réponse : cs_Capa6T
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
- 3 déc. 2005 à 14:42
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.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vecchio56
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
3
0
Merci
Merci vecchio56,
J'avais un doute à ce sujet...je n'en ai plus maintenant.
Commenter la réponse de cs_Capa6T
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
0
Merci
Tout va bien, tu n'a plus qu'a passer chez le dentiste ;)
Commenter la réponse de vecchio56
Messages postés
36
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
15 août 2012
3
0
Merci
lol...c'est fait !
Commenter la réponse de cs_Capa6T