我正在学习c ++,我制作了一个程序来使用类显示输入数字。
我使用构造函数来初始化xy。该程序运行良好,但我想使用全局作用域来显示变量而不是函数。
注释行是我想要执行的操作,但它给了我一个错误,我改用dublu::xdublu::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,它仅在成员变量为静态(即在类的所有实例之间共享)时起作用。

09-07 03:37