C++ 排序向量时运算符重载的编译错误

C++ 排序向量时运算符重载的编译错误,c++,compiler-errors,g++,operator-overloading,mingw,C++,Compiler Errors,G++,Operator Overloading,Mingw,我有一个大致定义如下的类。除此之外,它还有一个,您需要使小于运算符常量: bool operator<(const DictionarySearchItem& item) const { ... } ^ bool operator没有得到解释。难道我们不能毫无问题地从非常量方法调用常量方法吗?@Hippo是的,当然可以。糟糕,我今天睡得半熟。@Hippo好吧,这意味着排序算法正在

我有一个大致定义如下的类。除此之外,它还有一个
,您需要使小于运算符
常量

bool operator<(const DictionarySearchItem& item) const { ... }
                                                   ^

bool operator没有得到解释。难道我们不能毫无问题地从非常量方法调用常量方法吗?@Hippo是的,当然可以。糟糕,我今天睡得半熟。@Hippo好吧,这意味着排序算法正在
的左侧传递一个
const DictionarySearchItem
,我第一次得到了这个错误的解释。我已经更新了我的答案。我希望现在更清楚了。
DictionarySearchItemVector searchItems;

for (unsigned i = 0; i < entries.size(); i++) {
    // ...
    // ...
    DictionarySearchItem item;
    searchItems.push_back(item);
}
std::sort(searchItems.begin(), searchItems.end());
/usr/include/c++/4.2.1/bits/stl_algo.h:91: erreur : passing 'const hanzi::DictionarySearchItem' as 'this' argument of 'bool hanzi::DictionarySearchItem::operator<(const hanzi::DictionarySearchItem&)' discards qualifiers
bool operator<(const DictionarySearchItem& item) const { ... }
                                                   ^