#include <iostream>
#include <algorithm>
#include <numeric>
#include <vector>
using namespace std;
class C
{
public:
vector<int> CSort();
bool Func(int x, int y);
private:
vector<int> data;
};
vector<int> C::CSort()
{
vector<int> result(data.size(), 0);
iota(result.begin(), result.end(), 0);
sort(result.begin(), result.end(), Func);
return result;
}
bool C::Func(int x, int y)
{
return (data[x] > data[y]);
}
Dans ma classe C
défini comme ci-dessus, je voudrais obtenir un vecteur d'ordre de data
avec std::sort
en utilisant la fonction de membre Func
. Le résultat était une erreurQuelle est la bonne façon de référencer une fonction membre d'une classe?
'C :: Func': syntaxe non standard; utilisation & 'pour créer un pointeur vers un membre
Je crois que cela a quelque chose à voir avec Why doesn't reference-to-member exist in C++.
Cependant, je ne peux pas trouver un moyen correct de faire référence à cette fonction dans std::sort
. Comment puis-je l'implémenter correctement?
@ArchbishopOfBanterbury Vous aviez raison, et initialiser un vecteur d'ordre décroissant est un bon rappel, merci beaucoup;) –
Comme un côté notez, 'std :: sort (result, & C :: Func);' devrait fonctionner dès le début avec les prochaines Ranges TS. – Morwenn