以下のように大まかに定義されたクラスがあります。特に、<
比較演算子があります。
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 で正常にコンパイルされます。何が問題になる可能性がありますか?