原因

造成这个错误的一般原因是常量对象尝试调用该对象里的非常量函数,例如class Bala里有一个普通的成员函数func(),在某处声明了Bala类常量对象bala,const Bala bala,这是通过bala调用func()肯定是不行的。

class Bala
{void func(){// balabala...}void func_2() const{// balabala...}
}int main()
{const Bala bala;bala.func();   // 报错!error C2662.bala.func_2(); // 正确!return 0;
}

常量对象

1.希望某个变量的值不被改变,在前面加上const即可成为常量对象,常量对象要在声明时初始化;

    class Bala{public:int val = 1;};int main(){Bala bala;const Bala* ptr = &bala;  // 常量指针。ptr->val = 2;               // 报错!试图修改常量指针指向地址的值。return 0;}

2.对象传递经常用到指针,如果不希望某个接口甩出去的指针被修改或者被删除,则在指针变量前面加上一个const是一个不错的选择,引用同理;

const int* GetVaules()
{// 返回一个数组对象,不用担心这个对象被修改。
}

3.指针常量,形如 int* const val;这种类型得指针是可以修改其地址上的值,但是这个变量不能够再指向其他地址。

    class Bala{public:int val = 1;};int main(){Bala bala;Bala* const ptr = &bala;ptr->val = 2;     // 正确!可以修改指向地址的内容。Bala balabala;ptr = &balabala;    // 错误!不能指向其他地址。return 0;}

常量函数

声明常量函数的作用是表示这个函数不会修改该类里成员变量得值,在函数名称后面加上const即是常量函数。

    class Bala{public:int val = 1;int test() const  // 常量函数。{val = 2;  // 报错!不能修改成员变量得值,无论是不是常量成员。return val;}};

【c++常见错误01】error C2662: ‘const xxx‘: cannot convert ‘this‘ pointer from ‘xxx‘ to ‘xxx‘相关推荐

  1. MySQL:常见错误01

    ylbtech-MySQL:常见错误01 1.返回顶部 1. [SQL]select * from product_product_tag a LEFT JOIN system_tag b on b. ...

  2. 【STM32常见错误】error: #29: expected an expression 解决方法

    其实这个error#29有很多都错误都提示,本文会继续跟新在学习过程的解决方法 解决方法一:宏定义时 加入了分号: 删除掉即可 解决方法二 C语言中有C99标准 和C90标准 keil默认C90,改成 ...

  3. android常见错误-Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

    在andorid进行调试的过程中,出现下面的错误: 解决方法: 修改一下应用程序描述符: <manifest xmlns:android="http://schemas.android ...

  4. AE使用中的常见错误01

    问题1: 错误:AE出现已禁用刷新(要刷新视图,请释放Caps Lock) 解决方法:这个是键盘上的大写键打开了,关闭大写键就可以了. Caps Lock意思是:大写键锁定.

  5. ChatGPT 常见错误原因及解决方案:报错、回答不完整、网络错误等

    最近,由人工智能实验室 OpenAI 发布的对话式大型语言模型 ChatGPT 火得一塌糊涂.它可以与人类轻松地对话,无论是多么奇葩的问题 ChatGPT 都不在话下.在体验 ChatGPT 的同时我 ...

  6. VC6工程转VC9工程常见错误

    转载:VC6工程转VC9工程常见错误 1. error C2065: 'i' : undeclared identifier for循环体定义的循环变量只能在for循环体内使用.例如: for (in ...

  7. C++ 常见错误(01) —— error LNK1104: 无法打开文件“avcodec.lib”

    昨天安装配置了,结果今天早上打开电脑,所以dll的工程全部报错: 1>------ 已启动全部重新生成: 项目: Dll_test, 配置: Debug x64 ------ 1>stda ...

  8. error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)

    文件main.cc 文件main.cc #include <string> #include <iostream> #include <memory> #inclu ...

  9. Mac提示app损坏、Error,Mac电脑最常见错误的解决方案

    这篇文章蓝同学给大家分享一下Mac电脑上最常见错误的解决方案. 以下仅给出部分错误提示截图,类似的错误提示还有磁盘映像损坏.xxx.app有啥啥问题.... ①提示xxx.app已损坏,让你移到废纸篓 ...

最新文章

  1. 三大框架开发时,spring配置文件出现异常
  2. 采访Jesús Fernandes(QA主管)
  3. c语言输入数字变成星期几,C语言程序设计: 输入年月日 然后输出是星期几
  4. java 交换机_Java交换机案例:有或没有大括号?
  5. 日语python怎么说_python+Mecab,一次性学会日语分词
  6. wordpress functions.php 在哪,在functions.php中定义变量并在WordPress中的函数钩子中访问它们...
  7. vuedraggable嵌套块拖拽_Vue 基于 vuedraggable 实现选中、拖拽、排序效果
  8. Notepad++ 经常使用快捷键 (MEMO)
  9. linux每日命令(1):gzip命令
  10. 使用json 和jQuery制作级联dropdownlist
  11. Luogu5889 跳树
  12. C语言及程序设计概述
  13. diskgenius克隆硬盘无法启动_克隆分区
  14. 大学计算机基础教程第11章计算机网络与应用总结
  15. 裸辞指的是什么?裸辞到底好不好?
  16. 免费ssl申请且如何应用到宝塔
  17. 如何在Node.js应用程序中使用RethinkDB
  18. 面试中常见线程的50个问题
  19. Python图形界面开发(一)——pyside入门
  20. 苹果手机打字换行怎么换_苹果id怎么换

热门文章

  1. 【学习】常用深度学习算法有哪些
  2. JS判断是否为数字?!
  3. xml注释、格式化代码快捷键
  4. mysql增加字段类型_mysql 增加修改字段类型及删除字段类型
  5. 管理艾泰路由器WEB认证帐号脚本
  6. Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception:
  7. finereport 帆软报表建层级目录文件夹
  8. android imageview src获取,Android ImageView Src 和Background 区别
  9. 【物流重力货架】先进先出的重力式托盘货架(Gravity Flow Rack)在仓储中发挥着哪些作用?
  10. Mac新手教程——用iMessage发语音消息