Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 octobre 2008
-
14 oct. 2008 à 20:14
Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 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... :)
A voir également:
Pointeur de fonction membre de classe dérivé en paramètre de fonction de classe
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 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.
Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 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).