项目场景:
今天在模拟list时候,写到下面代码,出现了语法报错。
这个地方我自己的_iterator是私有的,所以提供了GetIterator接口去获取_iterator,但是不知道为什么就报出了下面的错误。
语法报错:
问题描述
这里语法报错报的很奇怪,因为上面说不能将const迭代器类转换为非const迭代器引用,这就很奇怪了,我写的就是const迭代器引用啊?
原因分析:
按照编译器的逻辑,是这样的:你下面调用的这个l是不是const引用?是的,那我就应该去调用const Getiterator吧?但是我没有提供const版本Getiterator
之后编译器就想试试可不可以把const 迭代器引用转换为非const迭代器引用(隐式类型转换),这肯定是语法不允许的,这属于权限的放大,自然就报了一个不能转换为非const迭代器的报错了。
解决方案:
了解了报错原因,我们只需要提供一份const GetIterator就好了。
EOF