我在两个结构上编写了一个自定义容器:一个T T* _a
数组和一个指向T T** _b
的数组。
第一个数组是一个简单数组,第二个数组包含指向第一个数组的单元格的指针。
两种结构的迭代器都是const和随机访问的。我已经实现了所有方法,第一个结构的迭代器工作正常。对于第二个......不是那么多。
编译时,当我尝试使用begin()
和end()
迭代元素时出现此错误:
error: invalid conversion from ‘int**’ to ‘const int**’ [-fpermissive]
return const_iterator(_b);
但我无法弄清楚如何解决它。我理解它是因为构造函数要求指向常量
的指针const_iterator(const T **p) : ptr(p) {}
但那不是我所拥有的,因为_b
是容器的属性而且它不是常数。对于其他迭代器,它工作得很好(唯一改变的是迭代器类中的几个解引用)。