C++ Error C2662 cannot convert 'this' pointer from 'const *'
---恢复内容开始---
这个错误在于一点:常量对象只能调用常量成员(函数\变量),不能调用非常量成员。另一方面,非常量对象,既可以调用常量成员,又可以调用非常量成员。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class A { public : void fun_1() { std::cout << "非常量函数" << std::endl; } void fun_2() const { std::cout << "非常量函数" << std::endl; } }; int main() { const A a; a.fun_1(); //编译报错, a.fun_2(); //编译通过 } |
上面这个简单得代码,可以说明这个问题。
对于实例化对象a, 被定义为常量对象,因此可以调用调用fun_2(), 不能调用fun_1()
在C++当中,我们在函数参数后面加上const,如上面代码fun_2()那样,则将整个成员变成常量成员,即将*this, 转换成const *this.
分类:
C++
« 上一篇: TFRecordReader "OutOfRangeError (see above for traceback): RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 1, current size 0)" 问题原因总结;
» 下一篇: 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments
» 下一篇: 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别
· 如何不购买域名在云服务器上搭建HTTPS服务