パブリック静的メソッドとプライベート静的メンバー/変数を持つ単純なクラスを含む.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)にアクセスできるかどうかです。
あなたの質問への回答はイエスです!静的メンバーTheVar
の定義に失敗しました:
int MyClass::TheVar = 0;
Cppファイル内。
1つの定義ルール を尊重することです。
例:
// 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;