假设我有一个.hpp文件,其中包含一个带有公共静态方法和私有静态成员/变量的简单类。 这是一个示例类:
class MyClass
{
public:
static int DoSomethingWithTheVar()
{
TheVar = 10;
return TheVar;
}
private:
static int TheVar;
}
当我打电话时:
int Result = MyClass::DoSomethingWithTheVar();
我希望“结果”等于10;
相反,我得到(第10行):
undefined reference to `MyClass::TheVar'
第10行是“TheVar = 10;”从方法。
我的问题是,是否可以从静态方法(DoSomethingWithTheVar)访问私有静态成员(TheVar)?
答案 0 :(得分:23)
对您的问题的回答是肯定的!您只是错过了定义静态成员TheVar
:
int MyClass::TheVar = 0;
在cpp文件中。
示例:
// 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;