在标头中,我声明了一个公共的静态const,并在源文件中将其定义为类成员。我想在源文件中定义它,因为我要包含它并使用它中的常量,而我不想包含在标题中。
如果我在标题中使用静态constexpr,则需要在其中定义。
标题
public: static const double DEG_TO_RADIANS;
来源
#include <math.h> const double MyClass::DEG_TO_RADIANS = (M_PI/180.0);
这是您不能使用constexpr的情况,这有关系吗?
为什么静态const允许我不定义变量,而静态constexpr不允许?
编辑:M_PI是这种情况的简单示例。
在标头中,我声明了一个公共的静态const,并在源文件中将其定义为类成员。我想在源文件中定义它,因为我要从其中包含并使用一个常量,...
constexpr
的全部要点是将其用于在编译时可以知道的值。如果定义在完全不同的文件中,那将不起作用。