将游戏数据加载到没有全局变量的池中
Loading game data into pool without globals
我正在写一个基于文本的游戏,通过TELNET提供,供我自己在C++娱乐。我根据游戏方面/组件(如车辆、行人、玩家、车辆、自行车等)创建了一个类层次结构。
我正在考虑实现一个"Pool"对象,该对象将存储指向特定加载元素的指针。我正在考虑在池中使用 Add() 函数,该函数将根据我想添加到池中的元素的类重载。问题如下:假设我想让这个元素池(或它上面的某个层)一直可用。也许我需要一个函数 GetAllVehicles()(只是一个快速示例),它将查看池数据并返回带有一堆指针的数组中的所有车辆。
问题是,如果我想在我的代码中的某个地方通过这个池怎么办。从本质上讲,Pool 对象在某种意义上应该是全局的,因为您希望在任何地方访问加载的游戏元素,而不必永远传递创建的对象。但是,我不希望它污染全局命名空间,我想要多线程,因此声明全局变量将是一个特别糟糕的主意。
问题很简单:我应该怎么做才能完成这项工作?
一种方法是在main
函数中创建一个实例,并将该实例传递给使用它的每个函数,或者传递给需要池的对象的构造函数。
另一种可能性是单例设计模式。
问题的两边都有火焰龙(单身与传递物体)。 选择你自己的毒药。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 将游戏数据加载到没有全局变量的池中