C++ std de tri de la liste personnalisée comparateur de qui dépend d'une variable de membre de l'instance de l'objet

Classe:

Class:
  private:
    ...
    vector<string> words; 
    vector< list<int> > vints;
  public:
    myFunction(...)

Que j'appelle une sorte de non-vide de la liste dans une autre fonction membre:

void myClass::myFunction (...) {
    ...
    if (!vints[i].empty()) vints[i].sort(sortFunc);
    ...
}

Ma fonction de tri:

bool myClass::sortFunc(const int& i, const int& j) { return (words[i] < words[j]); }

L'Erreur:

error: no matching function for call to std::list<int, std::allocator<int>      >::sort(<unresolved overloaded function type>)’
/usr/include/c++/4.4/bits/list.tcc:301: note: candidates are: void std::list<_Tp,     _Alloc>::sort() [with _Tp = int, _Alloc = std::allocator<int>]
/usr/include/c++/4.4/bits/list.tcc:378: note:                 void std::list<_Tp, _    Alloc>::sort(_StrictWeakOrdering) [with _StrictWeakOrdering = bool (SuperWordSearch::*)    (const int&, const int&), _Tp = int, _Alloc = std::allocator<int>]

J'ai fait des recherches et tombe sur les questions suivantes:

C++ Personnalisé fonction de comparaison pour la liste::sort

Problème de tri d'une liste de pointeurs

Erreur dans std::list::tri personnalisé comparateur (expected primary-expression before ')' token)

et ils auraient été suffisant s'il n'avait pas été le fait que dans cette classe, le sortFunc dépend de la variable de membre de MOTS pour cette instance de l'objet. Je ne peux donc pas faire le comparateur de fonction (sortFunc) globales ou statiques

EDIT: Viens de tomber sur ce Comment trier un std:liste lorsque vous avez besoin des données sur les membres? et il fournit une solution en faisant un ami de classe, mais est-il possible de réaliser cela à l'intérieur de la classe définie par l'utilisateur lui-même?

Merci de ne pas utiliser toutes les lettres majuscules identificateurs (sauf pour les macros, où vous devez les utiliser).
Fixe. A essayer de faire de l'info pertinente de se démarquer.
Est-ce C++11? Pouvez-vous utiliser les lambdas ou bind()?
¤ L'idée de base est de passer d'un objet qui a une operator() de sorte qu'il peut être utilisé en tant que fonction. Cela s'appelle une foncteur. En C++11, vous pouvez créer une telle bête à la volée, comme un "lambda". En C++98/03 vous devez définir une classe, ou d'utiliser certains tiers bibliothèque comme Boost. E. g. vous pouvez utiliser boost::bind à avoir un pointeur de votre words, transmise à votre réel de la fonction. Cheers & hth.,

OriginalL'auteur encore2097 | 2011-12-04