1

リンクリストイテレータクラスを実装しようと頑張っています。ここでオーバーロードされた"!="演算子を使用すると、コンパイラが文句を言います。

for (itr = (test0.begin()); itr != (test0.end()); ++itr)
{
    cout << *itr;
}

エラーは次のとおりです。

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

test0.end()とitrの両方がイテレーターであるため、一致するものが見つからない理由がわかりません。

オーバーロードされた演算子のコードは次のとおりです。

bool operator!= (iterator &rhs)
{
    return (this->current != rhs.current);
}

前もって感謝します。

4

1 に答える 1

5

これはconst-correctnessが原因だと思います。

bool operator!= (iterator const &rhs) const
{
    return (this->current != rhs.current);
}
于 2013-03-12T13:33:05.297 に答える