Класс:
Class:
private:
...
vector<string> words;
vector< list<int> > vints;
public:
myFunction(...)
Я вызываю сортировку по непустому списку в другой функции-члене:
void myClass::myFunction (...) {
...
if (!vints[i].empty()) vints[i].sort(sortFunc);
...
}
Моя функция сортировки:
bool myClass::sortFunc(const int& i, const int& j) { return (words[i] < words[j]); }
Ошибка:
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>]
Я исследовал и столкнулся со следующими вопросами:
C ++ Пользовательская функция сравнения для списка :: sort
Проблема с сортировкой списка указателей
Ошибка в std :: list :: sort с пользовательским компаратором (ожидаемое первичное выражение до маркера ')')
и их было бы достаточно, если бы не тот факт, что в этом классе sortFunc зависит от переменной-члена WORDS для этого экземпляра объекта. Поэтому я не могу сделать функцию компаратора (sortFunc) статической или глобальной
РЕДАКТИРОВАТЬ: Только что натолкнулся на это Как отсортировать список std: когда вам нужны данные члена? и он предоставляет решение путем создания класса друга, но возможно ли это сделать внутри пользователя? определил сам класс?