Почему это показано как ошибка и что это должно быть? - PullRequest
0 голосов
/ 11 ноября 2019

Это часть игры. Игра читает файл карты, и теперь карта должна быть реализована в едином шаблоне. 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 голосов
/ 11 ноября 2019

Есть ли у вас статический экземпляр Map, объявленный в файле cpp?

// 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;
}

Также рассмотрите возможность использования умных указателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...