一个单例 编译不过 急 在线等!

htt5156 2011-11-20 03:59:17
main.c

#include <cstdlib>
#include <iostream>
#include "c1.h"

using namespace std;

int main(int argc, char *argv[])
{
Singletion * e= Singletion::Instance();
system("PAUSE");
return EXIT_SUCCESS;
}




c1.h

class Singletion
{
public:
static Singletion* Instance();

private:
static Singletion* _instance;
protected:
Singletion();
};


c1.cpp

#include "c1.h"

Singletion* Singletion::_instance=0;

Singletion* Singletion::Instance()
{
if (_instance == 0)
_instance = new Singletion();
return _instance;
}
错误
提示为
[Linker error] undefined reference to `Singletion::Singletion()'
ld returned 1 exit status

在devc 和 g++ 中都是这个错误
麻烦问下 哪儿出错了
...全文
57 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2011-11-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengqiao1999 的回复:]

protected:
Singletion();
[/Quote]

++
1. Singletion应为Singleton的笔误吧。因此,要把Singletion();改为Singleton(); 然后实现这个缺省构造函数。或者直接改为:
Singleton(){}

2. 单例模式,一般需要将构造函数设成private的,而不是protected的。当然如果不准备让它成为其他类的基类,这样写也没有问题。

3. 只能说这是一个简单的单例模式学习代码,离真正的实用代码还是有较大的距离的,比如,这里楼主给出的代码是线程不安全的。
pankango9 2011-11-20
  • 打赏
  • 举报
回复
不懂........
xuanxuan683 2011-11-20
  • 打赏
  • 举报
回复
俺也不懂,路过看看:)
jenicooper 2011-11-20
  • 打赏
  • 举报
回复
_instance = new Singletion(); 需要调用构造函数,但是编译器发现没有定义。
vilnies 2011-11-20
  • 打赏
  • 举报
回复
编译器提示的很明显了。
fengqiao1999 2011-11-20
  • 打赏
  • 举报
回复
protected:
Singletion();
lgp88 2011-11-20
  • 打赏
  • 举报
回复
protected: Singletion();
只对其进行了 申明 未进行定义 加{}

64,662

社区成员

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

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