我想定义一些物理常量的结构(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 :(得分: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;
};