首页 新闻 会员 周边

C++编译问题

0
悬赏园豆:10 [已解决问题] 解决于 2018-10-10 22:22

 代码如下,我用的IDE是codeblock,在vs中编译没问题,到我这就各种问题,请大神帮忙看看,谢谢

  1. #include<iostream>  
  2. using namespace std;//c++的命名空间  
  3. class circle  
  4. {  
  5. public:  
  6.   
  7.     double r;  
  8.   
  9.     double pi = 3.1415926;  
  10.     double area = pi*r*r;  
  11.   
  12. };  
  13. int main()  
  14. {  
  15.     circle pi;  
  16.     cout << "请输入area" << endl;  
  17.     cin >> pi.r;  
  18.   
  19.     cout << pi.area << endl;    //乱码  
  20.   
  21.     system("pause");  
  22.     return 0;  
  23. }  

一直在出错, build log如下:

  1. .cpp|34|error: ISO C++ forbids initialization of member 'pi'|  
  2. .cpp|34|error: making 'pi' static|  
  3. .cpp|34|error: ISO C++ forbids in-class initialization of non-const static member 'pi'|  
  4. .cpp|35|error: 'circle::pi' cannot appear in a constant-expression|  
  5. .cpp|35|error: 'circle::r' cannot appear in a constant-expression|  
  6. .cpp|35|error: 'circle::r' cannot appear in a constant-expression|  
  7. .cpp|35|error: ISO C++ forbids initialization of member 'area'|  
  8. .cpp|35|error: making 'area' static|  
  9. .cpp|35|error: ISO C++ forbids in-class initialization of non-const static member 'area'|  
  10. .cpp||In function 'int main()':|  
  11. .cpp|46|error: 'system' was not declared in this scope|  
  12. ||=== Build finished: 10 errors, 0 warnings ===|  

请帮忙看看,谢谢

shell_nut的主页 shell_nut | 初学一级 | 园豆:129
提问于:2018-10-10 20:21
< >
分享
最佳答案
0

是自己技术不到家,不能怪编译器,虽然编译器之间存在不同

解析如下:我们从内存四区的角度分析问题。

在程序执行到15行时,为变量r,pi,area分配内存,r开始是乱码,具体分析看下图,这就是C++中为什么要使用成员函数的原因。

 

正确的程序代码如下:

  1. #include<iostream>  
  2. using namespace std;//c++的命名空间  
  3. class circle  
  4. {  
  5. public:  
  6.   
  7.     double r;  
  8.   
  9.     double pi ;  
  10.     double area;  
  11.     circle()  
  12.     {  
  13.         pi = 3.1415926;  
  14.     }  
  15.     double g()  
  16.     {  
  17.         area = pi*r*r;  
  18.         return area;  
  19.     }  
  20. };  
  21. int main()  
  22. {  
  23.     circle pi;  
  24.     cout << "请输入area" << endl;  
  25.     cin >> pi.r;  
  26.   
  27.     cout<<pi.g()<<endl; //正常输出  
  28.   
  29.     return 0;  
  30. }  
shell_nut | 初学一级 |园豆:129 | 2018-10-10 22:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册