У меня есть класс, определенный, как показано ниже. Среди прочего, у него есть оператор сравнения <
.Ошибка компиляции при перегрузке оператора при сортировке вектора
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