C++ 单例 undefined reference to

11

我是C++的新手,正在努力理解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;
}
编译器无法编译。我在所有3行中都遇到了以下错误,其中包含m_instance
错误:对 `Myclass::m_instance' 未定义的引用。

实际上,有一种更好的实现单例模式的方法。请查看这里 - Karlo Verde
1个回答

27

您忘记添加:

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

紧跟在#include "myclass.h"之后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接