我是C ++的新手并试图理解C ++中的Singleton模式。
myclass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class Myclass {
public:
static Myclass* getInstance();
private:
Myclass(){}
Myclass(Myclass const&){}
Myclass& operator=(Myclass const&){}
static Myclass* m_instance;
};
#endif // MYCLASS_H
myclass.cpp
#include "myclass.h"
Myclass* Myclass::getInstance() {
if (!m_instance) {
m_instance = new Myclass;
}
return m_instance;
}
编译器无法编译。我在使用m_instance
的所有3行上收到以下错误:
错误:未定义对`Myclass :: m_instance'的引用
答案 0 :(得分:15)
你忘了添加:
Myclass* Myclass::m_instance = 0; // or NULL, or nullptr in c++11
在#include "myclass.h"
下方。