全局变量-需要关于如何在c++中存储东西的想法
global variables - Need ideas on how to store something in C++
我正在为一款涉及Javascript, Jquery, c++和Awesomium的大型游戏项目工作。对于这个问题,现在我只关注c++。在游戏中,玩家应该有两种不同的"工作"(游戏邦注:你可以是科学家,也可以是挖地人)。我需要做一个方法来检查,看看你目前是哪个工作(你可以在游戏中改变)。我正在尝试一种临时的方式,因为我是c++的新手,我相信这项任务最终会交给别人。
我不确定如何保持这个"变量"存储。c++中的全局变量显然是一个大忌。我应该使用静态…方法吗?我只是不知道。实际的程序本身太大,如果不进行大量的编辑和工作,就无法包含任何示例。如果你有任何建议或问题,我很乐意倾听并尽力回答。
EDIT在我可以测试JS地图的新功能之前,我需要这个工作和切换的实现。这就是我这么做的原因,所以当我在做标题的时候我就在想。
使用"object"。这些是你随身携带的状态和变量的集合。
enum Job {
Scientist,
Ditchman
};
class Player {
Job j;
public:
void job(Job newjob) { j = newjob; }
Job job() { return j; }
Player() { job = Scientist; }
};
int main() {
Player p;
p.job(Ditchman);
//....
p.job(Scientist);
}
在这种情况下,Player::j
变量可以被所有Player
函数访问,并且通过创建Player的实例,我们也创建了j
的实例。如果其他函数需要访问我们的Player
,在这种情况下,我们通常会通过引用传递,因为我们不想创建更多的Player
。
我建议使用oo方法,使用名为job的基类和名为scientist和ditchman的派生类。job的每个派生对象将保存在某种数组或容器中,并使用多态调用来执行正确的专用函数,这些函数应该具有纯虚拟基类定义,然后在每个派生类中重写。
你说过"你可以在游戏中从一个科学家变成一个沟渠工"。因此,如果您使用这种方法,那么您将需要一个转换函数来完成在科学家对象和ditchman对象之间进行转换所需的所有工作。
永远不要使用全局变量。还要注意循环引用(一个类调用另一个类中的方法,然后那个类回调到第一个类),尽量不要这样做。使用某种容器(如vector、map或hash table)保存游戏中的对象列表,并将指向该对象的指针(或引用)传递给其他需要该对象的类,这是可以的。
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 在std::vector上存储带有模板的类实例
- 谷歌测试中的期望值存储在哪里
- 为什么C中的通用链表中存储的数据已损坏
- 在c++中获取两个大int,并将它们存储在数组中
- 在reactor中存储eventHandlers的最佳方式是什么