< 演算子のオーバーロードに問題があります。私はこのクラスを持っています:
WordEntry.h:
class WordEntry
{
public:
WordEntry(string word);
~WordEntry();
bool operator<(const WordEntry otherWordEntry);
string getWord();
private:
string _word;
};
WordEntry.cpp(コンストラクタとデストラクタを削除しました):
string WordEntry::getWord()
{
return _word;
}
bool WordEntry::operator<(WordEntry otherWordEntry)
{
return lexicographical_compare(_word.begin(),_word.end(),otherWordEntry.getWord().begin(),otherWordEntry.getWord().end());
}
次のように main.cpp で使用すると、すべて問題ありません。
WordEntry w1("Der");
WordEntry w2("das");
if (w1.operator<(w2)) {
cout << "w1 > w2";
}
else
{
cout << "w2 > w1";
}
しかしsort()
、vector
withWordEntry
オブジェクトを呼び出すと、エラー メッセージが表示されます。
二項式の無効なオペランド ('const WordEntry' および 'const WordEntry')
そして、それは を指していstl_algo.h
ます。
ここで何が起こっているか知っている人はいますか?