如何定义物理常数的结构?

0 c++

我想定义某种物理常数的结构(结构?名称空间?类?),这对于我的程序是全局性的。这样做的目的是使我能够为常数提供简单直观的名称,同时在其他地方保护这些值。例如,我可以在此结构中将q定义为基本电荷,而不必担心在程序的其他地方意外地将q用作循环变量。我的想法是定义一个结构(在main.h中):

struct constants {
    float q=1.6022e-19;
} _C;
Run Code Online (Sandbox Code Playgroud)

但这给了我错误

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'
Run Code Online (Sandbox Code Playgroud)

我在这里和整个互联网上都进行了搜索,但没有找到答案。如果您知道其中之一,请重定向我。我对Stack Overflow和C / C ++还是相当陌生,因此感谢您的耐心配合。

dwc*_*las 5

一个解决方案是在“常量”名称空间中设置一组静态变量:

namespace Constants
{
    static double constexpr Q = 1.3;
}
Run Code Online (Sandbox Code Playgroud)

引用变量,您可以执行以下操作:

Constants::Q
Run Code Online (Sandbox Code Playgroud)

您也可以在类或结构中定义静态变量,如果这样的话可以使代码更井井有条。