Pointeur de fonction membre de classe dérivé en paramètre de fonction de classe

Résolu
Fituza Messages postés 23 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 16 octobre 2008 - 14 oct. 2008 à 20:14
Fituza Messages postés 23 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 16 octobre 2008 - 16 oct. 2008 à 13:45
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

cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
16 oct. 2008 à 06:42
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.
3
Fituza Messages postés 23 Date d'inscription mardi 20 avril 2004 Statut Membre Dernière intervention 16 octobre 2008
16 oct. 2008 à 13:45
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
0
Rejoignez-nous