我试图从设计模式工作中获得第一个基本的单例示例,但这使我感到困惑。
这段代码使用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()'。
我遗漏了什么?
发布于 2016-02-08 18:55:38
你从来没有为
Singleton();在Singleton* Singleton::Instance()中使用的
_instance = new Singleton;通常,您应该并且可以将单个实例布局如下:
class Singleton {
public:
static Singleton* Instance() { static Singleton s; return &s; }
Singleton(const Singleton&) = delete;
void operator=(const Singleton&) = delete;
private:
Singleton() = default;
};https://stackoverflow.com/questions/35277076
复制相似问题