单例模式

caven 2006-02-27 08:05:24
class Singleton

{

public:

static Singleton * Instance()

{

if( 0== _instance)

{

_instance = new Singleton;

}

return _instance;

};

void method1()
{
};

protected:

Singleton(void)

{

}

virtual ~Singleton(void)

{

}

static Singleton* _instance;

};



int main(int argc, char* argv[])
{


Singleton::Instance()->method1();

return 0;
}


提示:
P1.obj : error LNK2001: unresolved external symbol "protected: static class Singleton * Singleton::_instance" (?_instance@Singleton@@1PAV1@A)
Debug/P1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

为什么?
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cunsh 2006-02-27
  • 打赏
  • 举报
回复
static成员变量要在类外边写这个呀.
Singleton* Singleton::_instance;
晨星 2006-02-27
  • 打赏
  • 举报
回复
静态成员在类中声明,同时需在类外定义并初始化。

class Singleton {
public:
static Singleton * Instance() {
if( 0 == _instance) {
_instance = new Singleton;
}
return _instance;
};
void method1(){};

protected:
Singleton(void){}
virtual ~Singleton(void){}

static Singleton* _instance;
};

// 定义并初始化。
Singleton* Singleton::_instance = 0;

int main(int argc, char* argv[]) {
Singleton::Instance()->method1();
return 0;
}

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧