我在使用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->element
和value
都是Int类型。我应该以不同方式检查平等吗?
答案 0 :(得分:1)
您的类型Int
是否有比较运算符?如果有,那么它的两个参数都是const
吗?特别是,如果比较运算符是成员,很容易忘记使其成为const
成员:
bool Int::operator== (Int const& other) const {
...
}
答案 1 :(得分:0)
根据错误,element
不是int
,而是Link<Int>
。您需要从Int
中获取Link
并将其转换为operator==
的内容(请注意Int
不是int
)。