作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
链接器错误消息“private: static class Worlds::Game * Worlds::Game::instance”
以下是与错误相关的代码段。
来自Game.h
static Worlds::Game* instance;
static Worlds::Game* getInstance();
来自游戏.cpp
Worlds::Game* instance = 0;
Worlds::Game* Worlds::Game::getInstance()
{
if (instance)
{
return instance;
}
else
{
return instance = new Worlds::Game();
}
}
所以我的问题是为什么我会收到此错误,因为我应该涵盖所有基础以创建我的游戏类的单例?
编辑:
我忘了在 Game.cpp 中添加我所有的 Glut 回调都需要调用 Game 中的函数来做某事。
void onKeyDownCallback(unsigned char key, int mouseX, int mouseY)
void onKeyUpCallback(unsigned char key, int mouseX, int mouseY)
void timerCallback(int value)
void onWindowReshapeCallback(int w,int h)
void onMouseClickedCallback(int button, int state, int mouseX, int mouseY)
void onMouseMovedCallback(int deltaX, int deltaY)
void displayCallback()
最佳答案
static Worlds::Game* instance;
- 从标题中删除它。因为 instance
被标记为 static
它被每个翻译单元复制。你得到的实例和翻译的单元一样多。但是你只在一个翻译单元中初始化它
还可以考虑以这种方式实现单例
:
Worlds::Game & Worlds::Game::getInstance()
{
static Game instance;
return instance;
}
关于c++ - 创建我的 Game 类的静态单例会引发链接器错误 2001?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885032/
我是一名优秀的程序员,十分优秀!