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;
}

为什么我收到关于 的错误== operatorcurr->element和都是valueInt 类型。我应该以不同的方式检查平等吗?

4

2 回答 2

1

你的类型Int有比较运算符吗?如果有,它是否将它的两个论点都视为const?特别是,如果您比较运算符是成员,很容易忘记将其设为const成员:

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

根据错误,elementis not an intbut a Link<Int>。您需要Int摆脱Link并将其变成具有operator==(注意Int不是int)的东西。

于 2012-10-06T17:29:13.710 回答