Pointeur de fonction en paramètre d'une fonction membre
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:
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:
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 :
Citation:
error C2664: 'CList::QSort' : impossible de convertir le paramètre 3 de 'bool (__thiscall CList::* )(int,int)' en 'CList::FnCmp'
Citation:
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 ?