Заголовок - главный вопрос.Точный сценарий (я использую «namespace std;»):
void SubstringMiner::sortByOccurrence(list<Substring *> & substring_list) {
list::sort(substring_list.begin(), substring_list.end(), Substring::OccurrenceComparator);
}
Это определение компаратора:
class Substring {
// ...
class OccurrenceComparator {
public:
bool operator() (Substring * a, Substring *b);
}
};
Реализация компаратора интуитивно понятна и тривиальна.Я также использую очень похожий компаратор в std :: set, и он отлично работает.Когда я добавляю функцию sortByOccurrence (), она дает мне ошибку в заголовке.
Что мне делать?
РЕДАКТИРОВАТЬ: Я сейчас пытаюсь передать Substring:: OccurrenceComparator () в качестве компаратора, и я получаю следующую ошибку:
g++ -Wall -g -c substring_miner.cpp -o obj/subtring_miner.o
substring_miner.cpp: In function ‘void SubstringMiner::sortByOccurrence(std::list<Substring*, std::allocator<Substring*> >&)’:
substring_miner.cpp:113: error: no matching function for call to ‘std::list<Substring*, std::allocator<Substring*> >::sort(std::_List_iterator<Substring*>, std::_List_iterator<Substring*>, Substring::OccurrenceComparator)’
/usr/include/c++/4.3/bits/list.tcc:303: note: candidates are: void std::list<_Tp, _Alloc>::sort() [with _Tp = Substring*, _Alloc = std::allocator<Substring*>]
make: *** [substring_miner] Error 1
Моя строка кода теперь:
list<Substring *>::sort(substring_list.begin(), substring_list.end(), Substring::OccurrenceComparator());
Я не могу удалить шаблон, или он даетмне сообщают, что параметры шаблона были неверными.