文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
error: cast from ... to ... loses precision
例子
#include <iostream>
class Foo {
public:
void print() const {
std::cout << (int)(this) << "\n";
}
};
int main()
{
class Foo foo;
foo.print();
return 0;
}
技巧
在 g++编译上面的例子,会报如下错误:
$ g++ foo.cc
foo.cc: In member function ‘void Foo::print() const’:
foo.cc:6:28: error: cast from ‘const Foo*’ to ‘int’ loses precision [-fpermissive]
这是一个强制类型转换的错误,你可以修改源代码为:
std::cout << (int*)(this) << "\n";
即可。
如果,你不想(或不能)去修改源程序,只是应为升级了 gcc 而带来了这样的错误,那么也可以使用 -fpermissive
选项,将错误降低为警告:
$ g++ foo.cc -fpermissive
foo.cc: In member function ‘void Foo::print() const’:
foo.cc:6:28: warning: cast from ‘const Foo*’ to ‘int’ loses precision [-fpermissive]
详情参见 gcc 手册
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论