我在做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;
'是這是因爲變量是私人的'是的,並且錯誤消息告訴你到底是什麼。變量是靜態的事實並不改變它仍然是私有的事實。 – SingerOfTheFall
如果你不希望變量爲'private',爲什麼你將它聲明爲'private'? –
這是私人的手段 - 它不允許在課堂以外使用。 參見:http://stackoverflow.com/questions/860339/difference-between-private-public-and-protected-inheritance – woockashek