9

我是 C++ 新手,并试图了解 C++ 中的单例模式。

我的班级.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

我的类.cpp

#include "myclass.h"

Myclass* Myclass::getInstance() {
    if (!m_instance) {
        m_instance = new Myclass;
    }

    return m_instance;
}

编译器无法编译。我在所有 3 行中收到以下错误m_instance

错误:未定义对“Myclass::m_instance”的引用

4

1 回答 1

21

您忘记添加:

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

就在#include "myclass.h".

于 2013-07-22T23:36:14.140 回答