C++ 为什么这显示为错误,它应该是什么?

C++ 为什么这显示为错误,它应该是什么?,c++,design-patterns,singleton,C++,Design Patterns,Singleton,这是游戏的一部分。 游戏读取地图文件,现在地图必须以单例设计模式实现。if()在编译器中显示为错误。 我的代码如下: //.h class Map { static Map* m_instance; public: static Map* getInstance(); Map(); ~Map(); //.cpp static Map *getInstance() { if (!m_instance) m_instance = new Ma

这是游戏的一部分。 游戏读取地图文件,现在地图必须以单例设计模式实现。if()在编译器中显示为错误。 我的代码如下:

//.h
class Map
{
    static Map* m_instance;
public:
    static Map* getInstance();
    Map();
    ~Map();

//.cpp
static Map *getInstance()
{
    if (!m_instance)
        m_instance = new Map();
    return m_instance;
}

您是否在cpp文件中声明了
Map
静态实例

// Map.h
class Map {
  static Map *m_instance;
public:
  static Map *getInstance();
  Map() = default;
  ~Map() = default;
};
//Map.cpp
Map*Map::m_instance=nullptr;//请提供一份报告。不使用
>关闭类声明结尾。您的
getInstance()
定义是一个自由函数,不是
Map
的成员,并且没有变量
m_instance
。如果您试图实现成员函数,则需要
static Map*Map::getInstance()
在单词“error”之后有描述错误原因的文本。
// Map.cpp
Map *Map::m_instance = nullptr; // <--- this line?

Map *Map::getInstance() {
    if (m_instance == nullptr) {
        m_instance = new Map();
    }
    return m_instance;
}