我在类中有一个私有静态const成员,在类实现中我有静态函数试图使用这个const,但它给了我错误。
//A.cpp
static int DoSomething();
// ....
static int DoSomething {
int n = A::X; //<<problem here
//....
}
我有
within this context
当我尝试使用DoSomething
中的‘const int A::X’ is private
和static const int X = 1;
中的{时,我得到{{1}}。
我该如何解决?
答案 0 :(得分:2)
您正尝试从免费功能访问A
的私人成员。这是不允许的。
你应该把它public
,例如:
class A {
public:
static const int X = 1;
}
答案 1 :(得分:1)
Jack的答案的替代解决方案是使函数DoSomething()
非静态并将其声明为A类的friend
:
//A.hpp
class A {
static const int X = 1;
// ....
friend int DoSomething();
};
//A.cpp
int DoSomething() {
int n = A::X;
//....
}