c++编译时出现discards qualifiers [-fpermissive]的错误
代码:
class HasPtr{
public:HasPtr(const string &s = string()):ps(new string(s)),i(0){}HasPtr(const HasPtr &p){ps = new string(p.getPs());i = p.i;}const string getPs(){return *ps;}
private:string *ps;int i;
};
error:
error: passing 'const HasPtr' as 'this' argument of 'const string HasPtr::getPs()' discards qualifiers [-fpermissive]|
在写HasPtr类的拷贝构造函数时发生了上述错误,找了很久没找出来,最后才发现拷贝构造函数传入的是一个常量引用,而常量引用不能够调用非常量成员函数。
太心酸了,之前还记录了一篇关于常量成员函数的限制,一写就忘。
知道错误就简单了
class HasPtr{
public:HasPtr(const string &s = string()):ps(new string(s)),i(0){}HasPtr(const HasPtr &p){ps = new string(p.getPs());i = p.i;}const string getPs() const{return *ps;}
private:string *ps;int i;
};
c++编译时出现discards qualifiers [-fpermissive]的错误相关推荐
- [ c++] cmake 编译时 undefined reference to `std::cout‘ 错误的解决方案
[ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案 参考文章: (1)[ c++] cmake 编译时 undefined refe ...
- 【开发日常】【Makefile】编译时如何将警告(warning)视为错误(error)?
我们有时会遇到内核编译时警告(warning)被视为错误(error)等问题 在内核源码中,移植外部驱动模块,出现报错: error: unused variable 'xxx' [-Werror=u ...
- javac编译时出现GBK报错(错误:编码GBK的不可映射字符)
javac编译时出现GBK报错(错误:编码GBK的不可映射字符)一 这里列出我遇到的三种情况 代码格式分别为:ANSI.UTF-8.无BOM的UTF-8(这里我用的是notepad++进行编写) AN ...
- apk 打包 java出错_AndroidApk混淆编译时,报告java.io.IOException...错误解决办法
在混淆编译之前,我的程序可以正常运行,混淆编译时,报告如下错误: Error:Execution failed for task ':gviews:transformClassesAndResourc ...
- error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)
文件main.cc 文件main.cc #include <string> #include <iostream> #include <memory> #inclu ...
- C语言编译时产生的警告:initializing ‘char *‘ with an expression of type ‘const char *‘ discards qualifiers
警告的产生: char *my_strstr(const char *str1,const char *str2) {const char *s1 = NULL;const char *s2 = NU ...
- arduino编译失败_Arduino编译时失败
错误信息: Arduino:1.8.4 (Windows 7), 开发板:"Arduino/Genuino Uno" C:\Program Files\Arduino\arduin ...
- C++编程常见问题—error: passing 'const std::map]' discards qualifiers或pass-by-reference-to-const-map导致的“d
产生问题的场景: int func(const map<int, string> &aMap) { string value = amap[0]; } 或者 int Test:: ...
- android开发板出错,为开发板编译时出错是什么原因
我也是怎么办 Arduino:1.8.4 (Windows 7), 开发板:"Arduino/Genuino Uno" C:\Program Files\Arduino\ardui ...
- android源码下载,编译及编译时遇到的错误整理
一.环境搭建 因为android的源码编译只支持linux和mac,所以无法在windows下编译.我的电脑也没有双系统,因此只有装一个虚拟机.我用的是VMware workstation 我放到了百 ...
最新文章
- linux下安装php的imagick扩展模块(附php升级脚本)
- 装修行业难互联网化?利润不合理并非本质,体制才是
- Httpwatch 工具介绍
- 程序图形化界面刷新以及如何从tkinter窗口中正确读出数据
- 如果人民币贬值,对股市会有什么影响?
- 手把手教你搭建数据库服务器平台 | DBA VS 自动化运维,究竟谁与争锋?
- Red5开发第一步-Hello World
- iOS 给任意一个view转换为image的方法封装
- (转)C#软件注册与注册机
- 赛微微电科创板上市破发:跌幅达26% 公司市值44亿
- 在C中将二进制转换为十进制
- 计算机考研时间计划表,【考研复习计划】_这里有最详细的考研复习计划时间表...
- sketchup 图片转模型_SketchUp插件:位图转模型使用技巧
- 台球原理分析及瞄准新方法
- php redis incr过期时间,Redis 利用 incr 和 expire 来限流, 并发导致过期时间失效问题...
- OSAL初始化流程分析
- Project Ara 手机,拼装的DIY手机
- 怎么开发一个小程序?从零开始手把手教你
- python学习之面向对象(二)
- 当机器学习遇到病理学,机遇和挑战(UCL柴秉浩博士 | 钰沐菡 公益公开课)