我正在构建自己的通用链表,并且正在尝试测试我的 const 反向迭代器。这就是我想要做的:
sorted_list<int> constIteratorList;
int we = 7;
int io = 1;
int pl = 12;
int jk = 4;
int zx = 13;
constIteratorList.add(we);
constIteratorList.add(io);
constIteratorList.add(pl);
constIteratorList.add(jk);
constIteratorList.add(zx);
const sorted_list<int>& reference = constIteratorList
sorted_list<int>::const_reverse_iterator constIt = reference.rbegin();
但是编译器用红色波浪线突出显示 constIteratorList 并说没有合适的用户定义转换 from
SortedListReverseIterator<int>
to SortedListReverseIterator<const int>
。我有一个名为 SortedListReverseIterator 的类和一个实现我的迭代器和反向迭代器的 SortedListReverseIterator。我在 sorted_list 类中键入了四种类型的迭代器——const_reverse_iterator、reverse_iterator、iterator 和 const_iterator。
编辑:我现在尝试在 constIteratorList 的 const 引用上调用 rbegin(),但现在在我的排序列表调用中,它说我无法从Node<T> * const
to转换为SortedListReverseIterator<T>
.
这是我对 rbegin() 的实现:
template <typename T>
SortedListReverseIterator<const T> sorted_list<T>::rbegin() const
{
return SortedListReverseIterator<const T>(tail);
}
我认为错误消息试图说的是 SortedListReverseIterator 的构造函数不接受 const T,所以我尝试为 const T 创建另一个复制构造函数,但没有成功。