2013-07-22 63 views
2

我是C++的新手,並試圖理解C++中的Singleton模式。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; 
} 

編譯器不能編譯。我收到以下錯誤,在所有3條線,m_instance

錯誤:未定義的引用`MYCLASS :: m_instance」

回答

9

你忘了補充:

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

權下#include "myclass.h"