Pointeur de fonction membre de classe dérivé en paramètre de fonction de classe [Résolu]

Signaler
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008
-
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008
-
Bonsoir (encor moi c'est la dernière promis :D),
je souhaiterai pouvoir passer la fonction QueryList de ma classe Client en paramètre de la fonction RefreshList de ma classe Requête.
Ou voici un exemple de code:

class Requête
{
protected:
virtual void RefreshList(void(*QueryList)())
{ ... }

};
class Client : public Requête
{
public:
void QueryList()
{ ... }
void RefreshList()
{
Requête::RefreshList(QueryList);
}
}

Donc là j'ai une erreur de compilation me diasant que void(*QueryList)() est différent de Client::void(*QueryList)().
Est-il possible alors de passer une fonction d'une classe dérivé en paramètre d'une fonction d'une classe mère
et est-il recommandé de le faire?
Alors j'ai quand même été chercher sur internet des exemples mais ceux-ci n'était pas aussi précis et généralement ne s'applicquait pas...
Merci d'avance... :)

2 réponses

Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
Non, ce n'est pas possible, car il faudrait que la classe Client soit déclaré avant la classe Requête pour que le prototype de la méthode void RefreshList( void(*Client::QueryList)() ) puisse être déclaré ; or, Client hérite de Requête, donc ne peut être déclaré avant.
C'est donc une mauvaise piste pour résoudre ton problème.
Messages postés
23
Date d'inscription
mardi 20 avril 2004
Statut
Membre
Dernière intervention
16 octobre 2008

Merci pour ta réponse,
j'ai choisi une autre solution bien que celle-ci était tentente (avec plusieurs classe dérivé)...
J'appelle désormais ma fonction QueryList dans RefreshList et je m'arrange pour récupèrer le résultat (sans entrer dans les détails).

Fituza