私は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