我今天早些时候问了一个关于单例的问题,我在理解我遇到的一些错误时遇到了一些困难。我有以下代码:
计时.h
class Timing {
public:
static Timing *GetInstance();
private:
Timing();
static Timing *_singleInstance;
};
时序.cpp
#include "Timing.h"
static Timing *Timing::GetInstance() { //the first error
if (!_singleInstance) {
_singleInstance = new Timing(); //the second error
}
return _singleInstance;
}
这段代码中有两个我无法弄清楚的错误。
该方法
GetInstance()
在标头中声明为静态。为什么在 cpp 文件中我必须省略这个词static
?它给出了错误:“不能声明成员函数'static Timing * Timing::GetInstance()'具有静态链接”。正确的写法是:Timing *Timing::GetInstance() { ... }
为什么我不能写
_singleInstance = new Timing();
?它给出了错误:“对 Timing::_singleInstance 的未定义引用”。_singleInstance
我通过在 cpp 文件中定义为全局 var解决了这个错误。