【发布时间】:2016-11-16 13:26:51
【问题描述】:
一段时间后我在做 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;
【问题讨论】:
-
is this because the variable is private是的,错误消息正是告诉您这一点。变量是静态的这一事实并不会改变它仍然是私有的这一事实。 -
如果你不希望变量是
private,为什么要声明它为private? -
这就是私有的意思——不允许在课堂外使用它。见:stackoverflow.com/questions/860339/…
-
你也在访问非静态函数中的静态变量。它也会给你错误。
标签: c++