我有一个私有静态变量的类.main函数应该更改变量中的值,但即使我将main函数设置为类的朋友,编译器也会告诉我该变量是私有的,不能从main访问.
例:
ClassA.h:
namespace nameA{
class ClassA {
private:
static int varA;
public:
ClassA(){};
friend int main(void);
};
}
Run Code Online (Sandbox Code Playgroud)
ClassA.cpp:
namespace nameA{
int ClassA::varA = 0;
}
Run Code Online (Sandbox Code Playgroud)
主要:
int main(void){
ClassA::varA = 42; //ERROR
}
Run Code Online (Sandbox Code Playgroud)
我不知道"朋友"是否也允许访问静态成员,或者我是否必须找到另一种解决方案.
ikl*_*kov 10
因为mainClassA中的友元函数位于nameA命名空间中.
如果你想声明int main(void)这个位于全局范围内的函数,你应该这样做:
friend int ::main(void);
Run Code Online (Sandbox Code Playgroud)
整个源码(在VS2015中编译):
int main(void);
namespace nameA {
class ClassA {
private:
static int varA;
public:
ClassA() {};
friend int ::main(void);
};
}
namespace nameA {
int ClassA::varA = 0;
}
int main(void) {
nameA::ClassA::varA = 42;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |