我正在学习c ++,我制作了一个程序来使用类显示输入数字。
我使用构造函数来初始化x
和y
。该程序运行良好,但我想使用全局作用域来显示变量而不是函数。
注释行是我想要执行的操作,但它给了我一个错误,我改用dublu::x
和dublu::y
尝试,但它说常量必须为static const
...这可行,但这不是解决方案我。有任何想法吗?
#include <iostream>
using namespace std;
class dublu{
public:
int x,y;
dublu(){cin>>x>>y;};
dublu(int,int);
void show(void);
};
dublu::dublu(int x, int y){
dublu::x = x;
dublu::y = y;
}
void dublu::show(void){
cout << x<<","<< y<<endl;
}
namespace second{
double x = 3.1416;
double y = 2.7183;
}
using namespace second;
int main () {
dublu test,test2(6,8);
test.show();
test2.show();
/*cout << test::x << '\n';
cout << test::y << '\n';*/
cout << x << '\n';
cout << y << '\n';
return 0;
}
最佳答案
成员变量绑定到每个实例。所以你需要使用
cout << test.x << '\n';
相反,对于
test.y
也是如此。现在,您使用的是test::x
,它仅在成员变量为静态(即在类的所有实例之间共享)时起作用。