使用静态非成员函数中的静态const成员

时间:2016-01-01 15:45:49

标签: c++ class static-members

我在类中有一个私有静态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 privatestatic const int X = 1;中的{时,我得到{{1}}。

我该如何解决?

2 个答案:

答案 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;
      //....
}