我试图制作自己的Vector3类(3D矢量类),但我发现了一个小问题。 我的目标是定义:
static const Vector3 zero = Vector3 (0.0, 0.0, 0.0);
static const Vector3 one = Vector3 (1.0, 1.0, 1.0);
在Vector3类中,所以我可以通过以下方式访问它们:
Vector3::zero;
Vector3::one;
但似乎(如果我理解这个问题)我不能在同一个类中声明一个类实例(就像Vector3定义中的Vector3),可能是因为当我声明零和一时,定义Vector3本身还没有结束。 你知道解决这个问题的任何解决方法吗?如果可能的话,我更喜欢不使用任何返回Vector3(0.0,0.0,0.0)或Vector3(1.0,1.0,1.0)的函数,而是使用静态const变量而无需额外的计算
答案 0 :(得分:8)
您可以在类中声明它们,但您还必须在外部定义和初始化它们。
// In a header file:
class Vector3 {
public:
Vector3(double, double, double);
static const Vector3 zero;
static const Vector3 one;
};
// In some source file:
#include "vector3.h"
const Vector3 Vector3::zero(0.0, 0.0, 0.0);
const Vector3 Vector3::one(1.0, 1.0, 1.0);