2015-11-21 3 views
0

Я изучаю C++, и я создаю программу для отображения номеров ввода с использованием классов. Я использовал конструкторы для инициализации x и y. Программа работает нормально, но я хотел использовать глобальную область, чтобы показывать переменные вместо функции. Прокомментированные строки - это то, что я хотел, но это дает мне ошибку, я попытался вместо этого использовать dublu::x и dublu::y, но он говорит, что константы должны быть static const ... это работает, но это не решение для меня. Есть идеи?C++ global scope class

#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; 
} 

ответ

2

Переменные-члены ограничены для каждого экземпляра. Таким образом, вы должны использовать

cout << test.x << '\n'; 

вместо, а так же для test.y. Прямо сейчас вы используете test::x, который работает только в том случае, если переменная-член статическая, то есть общая для всех экземпляров вашего класса.