c++ - 为什么这显示为错误,它应该是什么?
问题描述
这是游戏的一部分。游戏读取地图文件,现在地图必须以单例设计模式实现。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;
}
解决方案
你有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;
}
另外,考虑使用智能指针。
推荐阅读
- javascript - safari 中奇怪的 javascript 错误,在 chrome 中运行良好
- c++ - 在 Mac 终端上运行简单的 C++ OpenCV
- ios - 如何在swift 3中从注释引脚获取所有信息
- npm - 什么时候应该正确使用拉取请求进行版本控制
- listview - Xamarin Forms ListView 在从另一个页面返回时不显示突出显示
- spring - 处理前执行“全部删除” - Spring 集成用法
- amazon-web-services - AWS 上的 Terraform 下一个可用 CIDR
- php - PHP in_array 函数不起作用
- c# - sql-server:使用文本框和 datagridvew 更新两个表
- windows - 在 Python 2.7 中安装 numpy 而不设置环境