2015-06-12 56 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 
}