在自身内部定义类的标准实例(C ++)

时间:2017-07-09 22:35:02

标签: c++ class templates pointers subclass

我试图制作自己的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变量而无需额外的计算

1 个答案:

答案 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);