C++:编译器没有看到重载的运算符

Kud*_*aev 1 c++ overloading compiler-errors operator-overloading

我一直坚持尝试实现链表迭代器类.当我在这里使用重载的"!="运算符时编译器抱怨:

for (itr = (test0.begin()); itr != (test0.end()); ++itr)
{
    cout << *itr;
}
Run Code Online (Sandbox Code Playgroud)

这是错误:

error: no match for ‘operator!=’ in ‘itr != SinglyLinkedList<Object>::end() [with Object = int]()’
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它找不到匹配,因为test0.end()和itr都是迭代器.

这是重载运算符的代码:

bool operator!= (iterator &rhs)
{
    return (this->current != rhs.current);
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

wil*_*ilx 5

我怀疑这是因为const-correctness:

bool operator!= (iterator const &rhs) const
{
    return (this->current != rhs.current);
}
Run Code Online (Sandbox Code Playgroud)