2013-07-22 2 views
2

Я новичок в C++ и пытаюсь понять шаблон Singleton на C++.C++ Singleton undefined ссылка на

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; 
} 

компилятор не может скомпилировать. Я получаю следующее сообщение об ошибке, на всех 3-х линий с m_instance:

ошибка: неопределенная ссылка на `MyClass :: m_instance»

ответ

9

Вы забыли добавить:

Myclass* Myclass::m_instance = 0; // or NULL, or nullptr in c++11 

прямо под #include "myclass.h".