【Bug记录】C2662:不能将this指针从const转换为非const

简介: 【Bug记录】C2662:不能将this指针从const转换为非const

项目场景:

今天在模拟list时候,写到下面代码,出现了语法报错。

这个地方我自己的_iterator是私有的,所以提供了GetIterator接口去获取_iterator,但是不知道为什么就报出了下面的错误。

语法报错:


问题描述

这里语法报错报的很奇怪,因为上面说不能将const迭代器类转换为非const迭代器引用,这就很奇怪了,我写的就是const迭代器引用啊?


原因分析:

按照编译器的逻辑,是这样的:你下面调用的这个l是不是const引用?是的,那我就应该去调用const Getiterator吧?但是我没有提供const版本Getiterator

之后编译器就想试试可不可以把const 迭代器引用转换为非const迭代器引用(隐式类型转换),这肯定是语法不允许的,这属于权限的放大,自然就报了一个不能转换为非const迭代器的报错了。


解决方案:

了解了报错原因,我们只需要提供一份const GetIterator就好了。


EOF

相关文章
|
算法 编译器 C++
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(中)
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(中)
56 0
|
5月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
69 2
|
存储 算法 编译器
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(上)
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(上)
48 0
|
3月前
const修饰指针
const修饰指针
22 0
|
缓存 算法 安全
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(下)
类与对象知识总结+封闭类+const+this指针 C++程序设计与算法笔记总结(三) 北京大学 郭炜(下)
42 0
|
5月前
|
安全 编译器 C语言
深入了解C++:形参、内联、重载、引用、const和指针、new和delete
深入了解C++:形参、内联、重载、引用、const和指针、new和delete
36 1
|
C语言
C语言指针--指针中的const
C语言指针--指针中的const
71 0
|
5月前
|
存储 C语言
【C语言】const修饰指针的不同作用
【C语言】const修饰指针的不同作用
44 0
C++学习笔记_07 const、指针、引用 2021-04-19
C++学习笔记_07 const、指针、引用 2021-04-19
|
5月前
|
存储 C语言 索引
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)