关于类:C ++从公共静态方法访问私有静态成员?

C++ Access private static member from public static method?

本问题已经有最佳答案,请猛点这里访问。

假设我有一个.hpp文件,其中包含一个带有公共静态方法和私有静态成员/变量的简单类。这是一个示例类:

1
2
3
4
5
6
7
8
9
10
11
class MyClass
{
public:
    static int DoSomethingWithTheVar()
    {
        TheVar = 10;
        return TheVar;
    }
private:
    static int TheVar;
}

当我打电话时:

1
int Result = MyClass::DoSomethingWithTheVar();

我希望"结果"等于10;

相反,我得到(在第10行):

1
undefined reference to `MyClass::TheVar'

第10行是方法中的"thevar=10"。

我的问题是是否可以从静态方法(dosomethingwiththevar)访问私有静态成员(thevar)?


对你的问题的回答是肯定的!您刚才没有定义静态成员TheVar

1
int MyClass::TheVar = 0;

在CPP文件中。

它是尊重一个定义规则。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Myclass.h
class MyClass
{
public:
    static int DoSomethingWithTheVar()
    {
        TheVar = 10;
        return TheVar;
    }
private:
    static int TheVar;
};

// Myclass.cpp
#include"Myclass.h"

int MyClass::TheVar = 0;