Bonjour,

j'ai un soucis avec un pointeur de fonction que je voudrais passer en paramètre dans une fonction membre d'une classe.

Soit la classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CList
{
public:
   CList();
   ~CList();
 
   void Sort(bool bReverse);
 
   typedef bool(*FnCmp)(int, int); // la définition du pointeur de fonction
 
protected:
   void QSort(int nStart, int nEnd, FnCmp compare);
   bool CompareUp(int a, int b);
   bool CompareDown(int a, int b);
}
et la fonction Sort agit comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
void CList::Sort(bool bReverse)
{
   if(bReverse)
      QSort(0, GetCount()-1, &CompareDown); // erreur C2664
   else	
      QSort(0, GetCount()-1, &CList::CompareUp); // erreur C2440
}
dans les deux cas j'ai une erreur similaire à la compilation :
error C2664: 'CList::QSort' : impossible de convertir le paramètre 3 de 'bool (__thiscall CList::* )(int,int)' en 'CList::FnCmp'
error C2440: 'cast de type' : impossible de convertir de 'bool (__thiscall CList::* )(int,int)' en 'CList::FnCmp'
Est-ce que quelqu'un pourrait m'aider à résoudre ce problème si tant est qu'il est solvable ?