首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Singleton的未定义引用::Singleton()

对Singleton的未定义引用::Singleton()
EN

Stack Overflow用户
提问于 2016-02-08 18:52:22
回答 1查看 2.1K关注 0票数 0

我试图从设计模式工作中获得第一个基本的单例示例,但这使我感到困惑。

这段代码使用g++ -c Singleton.cpp干净地编译。

代码语言:javascript
复制
class Singleton {
public:
    static Singleton* Instance();
protected:
    Singleton();
private:
    static Singleton* _instance;
};

Singleton* Singleton::_instance = 0;

Singleton* Singleton::Instance() {
    if (_instance == 0) {
        _instance = new Singleton;
    }
    return _instance;
}

但是,当我添加一个骨架main()并使用g++ Singleton.cpp进行编译时,我得到了undefined reference to 'Singleton::Singleton()'

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 18:55:38

你从来没有为

代码语言:javascript
复制
Singleton();

Singleton* Singleton::Instance()中使用的

代码语言:javascript
复制
_instance = new Singleton;

通常,您应该并且可以将单个实例布局如下:

代码语言:javascript
复制
class Singleton {
public:
    static Singleton* Instance() { static Singleton s; return &s; }
    Singleton(const Singleton&) = delete;
    void operator=(const Singleton&) = delete;
private:
    Singleton() = default;
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35277076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档