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
et la fonction Sort agit comme suit :
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); }
dans les deux cas j'ai une erreur similaire à la compilation :
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 }
error C2664: 'CList::QSort' : impossible de convertir le paramètre 3 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 ?error C2440: 'cast de type' : impossible de convertir de 'bool (__thiscall CList::* )(int,int)' en 'CList::FnCmp'
Partager