私が遭遇した LNK2005 エラーの原因を理解できません。クラス A があるとします。
ファイルああ:
#ifndef A_H
#define A_H
class A{
public:
static foo(void);
private:
static bool m_someVar;
};
bool A::m_someVar = false;
#endif
ファイル A.cpp:
#include "A.h"
void A::foo(){
m_someVar = true;
}
上記のコードでは LNK 2005 が発生しますが、次のコードでは発生しません。
ファイルああ:
#ifndef A_H
#define A_H
class A{
public:
static foo(void);
private:
static bool m_someVar;
};
#endif
ファイル A.cpp:
#include "A.h"
bool A::m_someVar = false;
void A::foo(){
m_someVar = true;
}
ガードが含まれているにもかかわらず、誰かがなぜこれが起こっているのか説明できますか? #pragma once も追加する必要がありますか?
前もって感謝します。
編集: コンパイル エラー: 「エラー LNK2005: "private: static bool GameManager::m_isGameOver" (?m_isGameOver@GameManager@@0_NA) already defined in Execution.obj"