Я делаю C++ после времени, я объявил статическую переменную внутри класса как конфиденциальную, и насколько я знаю, что статические переменные не зависят от объектов и разделяются между объектами. Если я попытаюсь для печати статической переменной вне класса с использованием имени класса. Я получаю ошибки компиляции, потому что переменная является частной? Я прочитал, что к статическим переменным можно получить доступ только по имени класса и оператору разрешения области.Доступ к частной статической переменной за пределами класса
#include <iostream>
using namespace std;
class Sample{
int val;
static int value;
public:
Sample(int in);
Sample();
void setval(int in){
val = in;
}
void printval()const{
cout << val<<endl;
}
};
Sample::Sample(int in){
val = in;
}
Sample::Sample(){
val = 0;
}
int Sample::value = 34;
int main()
{
const Sample obj(1);
Sample obj2;
obj2.printval();
obj.printval();
cout <<"static value = " << Sample::value;
return 0;
}
Ошибка
main.cpp:37:5: error: 'int Sample::value' is private
int Sample::value = 34;
^
main.cpp:49:39: error: within this context
cout <<"static value = " << Sample::value;
'это потому, что переменная private' да, и сообщение об ошибке говорит вам именно это. Тот факт, что переменная является статичной, не изменяет того факта, что она по-прежнему является частной. – SingerOfTheFall
Если вы не хотите, чтобы переменная была 'private', почему вы объявили ее« приватной »? –
Это то, что частные средства - это не допускается использовать его вне класса. См. Http://stackoverflow.com/questions/860339/difference-between-private-public-and-protected-inheritance – woockashek