以下是我遇到的情况,并且给出我的解决方案,希望对您有帮助。
LNK2001错误
错误 LNK2001 无法解析的外部符号 “private: static class GameManager * GameManager::gamem” (?gamem@GameManager@@0PAV1@A) bighomework2 .\Main.obj
需要参考上一个问题:LNK2005错误
上一个错误的文件如下:
//GameMap.cpp
class GameMap {
private:
static GameMap* ga_me;
char gamemap[21][21];
GameMap() { memset(gamemap, 0, sizeof(gamemap)); }
~GameMap() { delete ga_me; }
public:
static
GameMap* getInstance() {
if (ga_me == NULL) {
ga_me = new GameMap();
}
return ga_me;
}
};
GameMap* GameMap::ga_me = NULL;
在这个文件中,将static成员变量定义在同一个文件中,会出现 LNK2005错误。
当去掉后,这次 我有遇到了 LNK2001 错误。
上次我是将最后一句注释掉,能够正常运行。现在不能够。。。
这次的不报错方案:
//GameMap.cpp
class GameMap {
private:
static GameMap* ga_me;
char gamemap[21][21];
GameMap() { memset(gamemap, 0, sizeof(gamemap)); }
~GameMap() { delete ga_me; }
public:
static
GameMap* getInstance() {
if (ga_me == NULL) {
ga_me = new GameMap();
}
return ga_me;
}
};
将全局变量定义到实现的文件中。
//GameMap.cpp
#include"GameMap.h"
GameMap* GameMap::gamem = NULL;
很奇怪的东西,以后在解决吧。
有大神看到的话,若能告知,非常感谢。