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

时间:2015-04-01 17:26:00

标签: c++

我想定义一些物理常量的结构(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 ++的新手,所以我感谢你的耐心等待。

2 个答案:

答案 0 :(得分:4)

一个解决方案是"常量"中的一组静态变量。名称空间:

namespace Constants
{
    static double constexpr Q = 1.3;
}

引用变量,你会这样做:

Constants::Q

你也可以在类或结构中定义静态变量,如果这样做有意义并保持代码更有条理。

答案 1 :(得分:2)

你要么用

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

甚至更好地将这些常量放在命名空间

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