C++编译出错discards qualifiers [-fpermissive]
2016-08-06 20:06
465 查看
错误为
摘出相关错误代码:
错误的原因很简单,C++中const 引用的是对象时只能访问该对象的const 函数,因为其他函数有可能会修改该对象的成员,编译器为了避免该类事情发生,会认为调用非const函数是错误的。
意思是说 在一个加了const限定符的成员函数中,不能够调用 非const成员函数。而error:…discards qualifiers 的意思就是缺少限定符。
解决方法是 InetAddress::ip_ntoa() 和 InetAddress::port_ntoh() 函数加const修饰this,表示不会修改该对象的成员。如下:
error: passing ‘const sn::InetAddress’ as ‘this’ argument of ‘std::string sn::InetAddress::ip_ntoa()’ discards qualifiers [-fpermissive]
摘出相关错误代码:
//========================================================= //TcpConnection类中 void TcpConnection::showip() const { cout << "ip:" << _localAddr.ip_ntoa() << "port:" << _localAddr.port_ntoh() << endl } //========================================================== //InetAddress类中 string InetAddress::ip_ntoa() { return string(inet_ntoa(_addr.sin_addr)); } unsigned short InetAddress::port_ntoh() { return ntohs(_addr.sin_port); } //==========================================================
错误的原因很简单,C++中const 引用的是对象时只能访问该对象的const 函数,因为其他函数有可能会修改该对象的成员,编译器为了避免该类事情发生,会认为调用非const函数是错误的。
意思是说 在一个加了const限定符的成员函数中,不能够调用 非const成员函数。而error:…discards qualifiers 的意思就是缺少限定符。
解决方法是 InetAddress::ip_ntoa() 和 InetAddress::port_ntoh() 函数加const修饰this,表示不会修改该对象的成员。如下:
string InetAddress::ip_ntoa() const { return string(inet_ntoa(_addr.sin_addr)); } unsigned short InetAddress::port_ntoh() const { return ntohs(_addr.sin_port); }
相关文章推荐
- c++ XXXXXX discards qualifiers [-fpermissive] 错误原因
- C++模板继承在g++编译中应注意的问题(if you use `-fpermissive', G++ will accept your code, but allowing the use ...)
- VS2008 C++编译中 提示”生成"cmd.exe"时出错 “
- Cocos2d-x 3.2编译生成Android程序出错的解决方案:c++_static报错
- c++ 异常 discards qualifiers 丢弃
- 关于C++编译静态模板成员数据出错 Too few template-parameter-lists
- 关于C和C++混合编译出错的解决方法
- 编译出错:configure: error: installation or configuration problem: C++ compiler cannot create executables
- OpenTLD-master MATLAB 编译的时候出错 “error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int”
- c++驱动编译出错解决方法
- codeblocks c++ 编译出错
- c++的缺省参数在头文件中给定时,编译出错,编译不过。
- Ubuntu下ndk-build编译C++出错:non-numeric second argument to `wordlist' function: '
- Ubuntu下ndk-build编译C++出错:non-numeric second argument to `wordlist' function: '
- cocos2d-x3.2中2编译生成Android程序出错的解决方案:c++_static报错
- (菜鸟贴)gcc编译c++出错提示
- pcre编译出错gcc-c++未安装
- (c++) Passing `const' as `this' argument of `' discards qualifiers
- C++ goto 在g++ 编译时出现 crosses initialization 和 jump to label xxx [-fpermissive] 错误
- codeblocks c++ 编译出错