列表的迭代器可以返回非常量引用吗?
Can list's iterator return a non-const reference?
我是C++的新手。我需要编写一个使用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
表示正确的元素。
有没有一种方法可以将对迭代器的引用作为非常量引用返回,或者有没有其他方法可以实现这一点?如果有必要,我可以发布更多的代码。
没有代码很难判断,但考虑到错误,您可能需要operator[]
:的const
过载
template <typename T>
const T& operator[](std::size_t n) const
{
...
}
相关文章:
- 什么时候在C++中返回常量引用是个好主意
- 通过常量引用传递参数的矩阵模板类
- 在C++中使用非常量引用作为常量
- 具有常量引用参数的函数模板专用化
- 多个"常量引用"变量可以共享同一个内存吗?
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 为什么常量方法可以采用非常量引用?
- 为什么当我们有常量引用时创建临时对象?
- 如何返回向量的常量引用?
- C++:常量引用参数
- 不同于按值传递和常量引用传递的程序集
- 为什么const_cast和static_cast常量引用没有效果?
- C++ 获取函数在常量引用中按值返回的结果
- 从 BubbleSort* 类型的右值初始化 'AssortedSorter&' 类型的非常量引用无效"
- C++ 在类中使用常量引用文本时 O2 内存泄漏
- 是否可以跨 dll 边界返回常量引用/指向 std::vectors?
- C++中大多数/所有 setter 函数的参数是否应该写为常量引用?
- 通过非常量引用参数修改常量引用参数
- 将常量引用传递给线程
- 为什么C++中没有常量引用,就像常量指针一样?