I am new to C++ and trying to understand the Singleton Pattern in C++.
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;
}
The compiler can't compile. I get the following error, on all 3 lines with m_instance
:
error: undefined reference to `Myclass::m_instance'
You forgot to add:
Myclass* Myclass::m_instance = 0; // or NULL, or nullptr in c++11
right under #include "myclass.h"
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With