【发布时间】:2011-04-09 23:34:17
【问题描述】:
我今天早些时候问了一个关于单例的问题,但我在理解我遇到的一些错误时遇到了一些困难。我有以下代码:
Timing.h
class Timing {
public:
static Timing *GetInstance();
private:
Timing();
static Timing *_singleInstance;
};
Timing.cpp
#include "Timing.h"
static Timing *Timing::GetInstance() { //the first error
if (!_singleInstance) {
_singleInstance = new Timing(); //the second error
}
return _singleInstance;
}
这段代码中有两个我无法弄清楚的错误。
-
方法
GetInstance()在标头中声明为静态。为什么在cpp文件中我必须省略static这个词?它给出了错误:“不能声明成员函数‘静态计时*计时::GetInstance()’具有静态链接”。正确的写法是:Timing *Timing::GetInstance() { ... } 为什么我不能写
_singleInstance = new Timing();?它给出了错误:“对 Timing::_singleInstance 的未定义引用”。我通过在 cpp 文件中将_singleInstance定义为全局变量解决了这个错误。
【问题讨论】:
-
这有点跑题了,但我觉得有必要提一下:你在 Stack Overflow 上问了很多问题。他们中的大多数都得到了正确的回答。是否有原因导致您不接受这些答案中的任何一个?如果您不奖励他人,回答您的问题可能会让他们感到沮丧。
标签: c++ static static-members