我的目标是在我正在开发的 C++ 游戏中拥有全局常量(以表示一些图形信息等)。我当前的实现是将它们全部放在 .h 中并将它们包含在各处。这是可行的,只是每次我更改设置时,都必须重新编译整个代码库。
所以,我的下一个想法是将它们放入一些配置 txt 文件中并解析它们,这样当设置更改时,代码实际上不会更改。解析器非常简单,我可以将值放入常量中,但由于解析器是一个代码块,因此常量不再是全局的。
有没有好的办法解决这个问题呢?也许有某种方法可以使它们成为全局的,尽管处于阻塞状态,或者有某种方法可以避免在更改设置时重新编译所有内容?
我用来解决这个问题的方法是将变量放在一个单独的全局命名空间中,该命名空间位于一个名为类似的头文件中config.h
,然后在各处包含该文件。
// In config.h
#ifndef CONFIG_H
#define CONFIG_H
namespace config
{
extern int some_config_int;
extern std::string some_config_string;
bool load_config_file();
}
#endif
然后在源文件中,您define变量并将它们设置为默认值。该源文件还包含从配置文件加载变量的代码。
// In config.cpp
namespace config
{
int some_config_int = 123;
std::string some_config_string = "foo";
}
bool config::load_config_file()
{
// Code to load and set the configuration variables
}
现在,在每个源文件中,您需要配置变量,包括config.h
并像这样访问它们config::some_config_int
.
然而,没有“正确”的方法来解决这个问题,所有有效的方法在我看来都是正确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)