错误:'operator =='不匹配

时间:2012-10-06 17:26:51

标签: c++ data-structures

我在使用this data structures book的基本代码实现链接列表的搜索功能时遇到了一些麻烦。这是我得到的错误:

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->elementvalue都是Int类型。我应该以不同方式检查平等吗?

2 个答案:

答案 0 :(得分:1)

您的类型Int是否有比较运算符?如果有,那么它的两个参数都是const吗?特别是,如果比较运算符是成员,很容易忘记使其成为const成员:

bool Int::operator== (Int const& other) const {
   ...
}

答案 1 :(得分:0)

根据错误,element不是int,而是Link<Int>。您需要从Int中获取Link并将其转换为operator==的内容(请注意Int不是int)。