有没有办法声明一个公共静态常量,该常量将使用 constexpr 在源文件中定义(有什么区别)?



在我的标头中,我声明了一个公共静态常量,并在源文件中定义为类成员。 我想在源文件中定义它,因为我包含并使用了 it 中的常量,并且我不想包含在我的标头中。

如果我在标题中使用静态 constexpr,则需要在那里定义。

页眉

public:
static const double DEG_TO_RADIANS;

#include <math.h>
const double MyClass::DEG_TO_RADIANS = (M_PI/180.0);

这是你不能使用 constexpr 的情况,这有什么关系吗?

为什么静态常量允许我不定义变量,而静态常量不允许?

编辑:M_PI是这种情况的一个简单例子。

constexpr的全部意义在于将其用于编译时已知的值。如果定义位于完全不同的文件中,则不起作用。

静态常量要求您提供一个定义,链接器可以在不同文件之间连接该定义。

最新更新