列表的迭代器可以返回非const引用吗?

时间:2013-12-12 03:35:48

标签: c++ iterator

我是C ++的新手。我需要编写一个使用list的Linked List类。我大部分时间都在这里,但是我需要一个[]运算符来返回列表中的第n个元素。我在大多数情况下使用它,但在我的测试驱动程序中,我需要比较来自不同列表的两个元素。 (即l1[n]==l2[m])。这给出了以下编译错误:

error: passing ‘const StrList {aka const TList<std::basic_string<char> >}’ as ‘this’ argument of ‘T& TList<T>::operator[](int) [with T = std::basic_string<char>]’ discards qualifiers [-fpermissive]

我认为这里的问题是我从[]运算符中的迭代器返回调用返回一个const引用。 (来自[]运算符的返回值为return(*iter);,其中*iter表示正确的元素。

有没有办法将对迭代器的引用作为非const引用返回,还是有其他方法我应该这样做?如果有必要,我可以发布更多代码。

1 个答案:

答案 0 :(得分:4)

没有代码就很难分辨,但鉴于错误,您可能需要const重载operator[]

template <typename T>
const T& operator[](std::size_t n) const
{
     ...
}