1

このデータ構造ブックのベース コードを使用して、リンク リストの検索機能を実装する際に問題が発生しています。これは私が得ているエラーです:

llist.h: In member function 'void LList<E>::search(const E&, bool&) [with E = Int]':
Llistmain.cpp:31:1:   instantiated from here
llist.h:119:3: error: no match for 'operator==' in '((LList<Int>*)this)->LList<Int>::curr->Link<Int>::element == value'

そして、これが私の検索メンバー関数の実装です:

void search(const E& value, bool& found) {
    if (curr->element == value)
        found = true;
    else if (curr != NULL) {
        curr = curr->next;
        search(value, found);
    }
    else found = false;
}

に関するエラーが表示されるのはなぜ== operatorですか? curr->elementとはどちらもvalueInt 型です。別の方法で等価性をチェックする必要がありますか?

4

2 に答える 2

1

あなたの型Intには比較演算子がありますか? 持っている場合、両方の引数を として取りconstますか? 特に、比較演算子がメンバーの場合、それをメンバーにすることを忘れがちconstです。

bool Int::operator== (Int const& other) const {
   ...
}
于 2012-10-06T17:30:34.950 に答える
0

エラーによると、elementは ではなくintですLink<Int>Intから を取り出して( ではないことに注意してください)Linkを持つものに変える必要があります。operator==Intint

于 2012-10-06T17:29:13.710 に答える