我无法理解导致我遇到的 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 吗?
提前致谢。
编辑:这里是编译错误:“错误 LNK2005:“private: static bool GameManager::m_isGameOver”(?m_isGameOver@GameManager@@0_NA) 已经在 Execution.obj 中定义”