C++ 为什么这显示为错误,它应该是什么?
这是游戏的一部分。 游戏读取地图文件,现在地图必须以单例设计模式实现。if()在编译器中显示为错误。 我的代码如下: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
//.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;
}