我用来解决这个问题的方法是将变量放在一个单独的全局命名空间中,该命名空间位于一个名为的头文件中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
在源文件中,您定义变量并将它们设置为默认值。此源文件还包含从配置文件加载变量的代码。
// 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
.
但是,没有解决这个问题的“正确”方法,所有可行的方法在我看来都是正确的。