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

时间:2016-02-08 18:52:23

标签: c++ design-patterns singleton

我试图从Design Patterns获取第一个基本单例示例 工作,但这让我很难过。

此代码与g++ -c Singleton.cpp完全编译:

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()'

我错过了什么?

1 个答案:

答案 0 :(得分:4)

您从未添加

的定义
Singleton();

<{1}}中使用的是

Singleton* Singleton::Instance()

通常你应该并且可以布局像:

这样的单身
_instance = new Singleton;