迭代器指针指针结构

时间:2018-03-26 07:36:48

标签: c++ stl const-iterator

我在两个结构上编写了一个自定义容器:一个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是容器的属性而且它不是常数。对于其他迭代器,它工作得很好(唯一改变的是迭代器类中的几个解引用)。

Here's有问题的迭代器的代码。 Here's有效的那个。除了我做的那个之外还应该有什么其他的差异?谢谢!

1 个答案:

答案 0 :(得分:0)

答案是正如Igor在关于int **转换为const int **的评论中所说的那样。我认为它像int *一样工作,但事实并非如此。我找到了更多信息here