我有一個粗略定義類如下。其中,它有一個<
比較運算符。排序向量時,運算符重載編譯錯誤
class DictionarySearchItem {
public:
DictionarySearchItem();
double relevance() const;
bool operator<(const DictionarySearchItem& item) { return relevance() > item.relevance(); }
};
typedef std::vector<DictionarySearchItem> DictionarySearchItemVector;
我那麼使用類是這樣的:
DictionarySearchItemVector searchItems;
for (unsigned i = 0; i < entries.size(); i++) {
// ...
// ...
DictionarySearchItem item;
searchItems.push_back(item);
}
然而,當我嘗試排序向量:
std::sort(searchItems.begin(), searchItems.end());
我得到以下編譯錯誤使用MinGW。
/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
我不太明白什麼是不正確的與我的代碼和錯誤消息不清楚給我。相同的代碼可以很好地與MSVC2008編譯。任何想法可能是什麼問題?
我第一次得到了這個錯誤的解釋。我已經更新了我的答案。我希望現在更清楚。 – juanchopanza