2015-06-12 58 views
0

在一些空闲时间,我正在研究一些物理模拟代码,所以我a)有一个框架可以在未来建立起来,并且b)使用C++保持新鲜。我有几个值(光速,盒子大小,粒子数量,类似的东西),几乎所有的程序都需要,但我真的希望给用户在输入中指定这些值的能力。 cfg文件(所以像#DEFINE + a constants.h文件将不起作用)。我当然可以读取这些值,但传统/最好的方法是让它们跨越多个不同的模块?如何组织输入全局变量?

回答

1

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

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

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

+0

嗯,是的,当然!这效果更好。我从来没有真正有理由在C++中使用外部对象; *一个*包含当前宇宙一切的物体非常适合该法案! –

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 
}