2015-04-01 35 views
0

我想定義某種結構(struct?namespace?class?)的物理常量,這些結構將在我的程序中全局知道。這樣做的目的是讓我給常量簡單,直觀的名稱,同時在別處保護這些值。例如,我可以在這個結構中定義q是基本費用,而不必擔心在程序中的其他地方偶然使用q作爲循環變量。我的想法是定義一個結構(在main.h):如何定義物理常數的結構?

struct constants { 
    float q=1.6022e-19; 
} _C; 

但給我的錯誤

main.h:79: error: ISO C++ forbids initialization of member 'q' 
main.h:79: error: making 'q' static 
main.h:79: error: ISO C++ forbids in-class initialization of non-const static member 'q' 

我搜索都在這裏,並在互聯網上大,但並沒有找到答案。如果你知道一個,請重定向我。我對Stack Overflow和C/C++都很新,所以我很感謝你的耐心。

+0

哪些錯誤,請? – 2015-04-01 17:30:03

+0

對不起。在我準備好之前打回來。還在習慣這個論壇。 – SkippyZoom 2015-04-01 17:31:20

+0

您是否啓用C++ 11(或更高版本)進行編譯? – Jarod42 2015-04-01 17:31:22

回答

3

一個解決方案是一套靜態變量的「常量」命名空間:

namespace Constants 
{ 
    static double constexpr Q = 1.3; 
} 

來引用變量,你會怎麼做:

Constants::Q 

,你也可以定義靜態變量在類或結構中也是如此,如果這樣做有意義並且使代碼更加有組織。

+0

@ Jarod42謝謝。由於我仍然在VS2012編譯器上,所以並沒有多使用constexpr。 – dwcanillas 2015-04-01 17:35:15

1

你要麼使用

struct constants { 
    static const float q=1.6022e-19; 
}; 

甚至更​​好的地方,這些常量在一個命名空間

namespace constants { 
    static const float q=1.6022e-19; 
};