如何组织输入全局变量?

时间:2015-06-12 15:18:20

标签: c++ global-variables config

在一些业余时间,我正在研究一些物理模拟代码,所以我a)有一个框架可以在将来构建,并且b)让自己保持新鲜的C ++。我有几个值(光速,盒子大小,粒子数,类似的东西),几乎每个程序都需要,但我真的想让用户能够在输入中指定这些值。 cfg文件(因此#DEFINE + constants.h文件之类的东西不起作用。我当然可以很好地阅读这些值,但是在许多不同模块中提供它们的常规/最佳方法是什么?

2 个答案:

答案 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)

为什么不让structclass包含这些变量而不是一堆其他不相关的全局变量,并且有一个函数可以检索或更新配置的当前状态?

例如,作为struct,您可以实现序列化方法来读取或写入.cfg - 类型文件。

这也可以实现一个静态方法来返回活动配置,因此一个全局方法引用实现中的局部变量。