我想创建一个与内部声明的类相同类型的静态constexpr成员变量。
基本上,我有这段代码:
class Vector3
{
public:
float x, y, z;
Vector3(float, float, float);
static constexpr Vector3 zero = { 0.0f, 0.0f, 0.0f };
}
我相信,由于变量是静态的,因此它的定义应在cpp文件中,当变量为const:static const Vector3 zero;
时,我通常会这样做,然后在cpp文件:const Vector3 Vector3::zero = { 0.0f, 0.0f, 0.0f };
中对其进行初始化
将其更改为constexpr时,将其保留为这样的错误:a constexpr static data member declaration requires an in-class initializer
。
尽管如上所述在头文件中添加了定义,但出现了错误a member of type "const Vector3" cannot have an in-class initializer
。
我认为我要实现的目标是不可能的吗?还是有一种正确的方法来声明和初始化我无法理解的这种类型的变量?
很明显,我的问题是constexpr变量是声明它的类的类型。该类型当时不完整,但是我不能在其他地方定义它,因为constexpr定义必须在其声明中给出声明。