为什么将此显示为错误,它应该是什么?

时间:2019-11-10 21:42:16

标签: 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 Map();
    return m_instance;
}

1 个答案:

答案 0 :(得分:0)

您是否在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; // <--- this line?

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

另外,请考虑使用智能指针。