在一些业余时间,我正在研究一些物理模拟代码,所以我a)有一个框架可以在将来构建,并且b)让自己保持新鲜的C ++。我有几个值(光速,盒子大小,粒子数,类似的东西),几乎每个程序都需要,但我真的想让用户能够在输入中指定这些值。 cfg文件(因此#DEFINE
+ constants.h
文件之类的东西不起作用。我当然可以很好地阅读这些值,但是在许多不同模块中提供它们的常规/最佳方法是什么?
答案 0 :(得分:2)
单身人士怎么样:
class Universe {
private:
Universe();
public:
static Universe& GetInstance();
void Reload();
double GetSpeedOfLight() const { return m_C; }
...
private:
double m_C; //!< Speed of light
};
Universe& Universe::GetInstance() {
static Universe instance;
return instance;
}
Universe::Universe() {
Reload();
}
void Universe::Reload() {
// load your constants
}
答案 1 :(得分:1)
为什么不让struct
或class
包含这些变量而不是一堆其他不相关的全局变量,并且有一个函数可以检索或更新配置的当前状态?
例如,作为struct
,您可以实现序列化方法来读取或写入.cfg
- 类型文件。
这也可以实现一个静态方法来返回活动配置,因此一个全局方法引用实现中的局部变量。