标题是主要问题。确切的情况(我在 '使用命名空间std;'):std :: list :: sort与自定义比较器(预期的主表达式之前的')'令牌)的错误
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()函数时,它给了我标题中的错误。
我该怎么办?
编辑:我现在试图通过子串:: 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());
我无法删除该模板或它给我一个错误,说模板参数是错误的。
其实没有。我们希望整个错误信息实际上包含有用的信息。 – 2009-07-08 21:52:15
添加了整个错误消息 – 2009-07-08 21:56:09
错误消息说,列表没有一个使用这些参数的sort()方法。尝试substring_list。排序(子串:: OccurrenceComparator()); – 2009-07-08 22:00:29