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

Gug*_*ugu 0 c++ templates pointers class 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);
Run Code Online (Sandbox Code Playgroud)

在Vector3类中,所以我可以通过以下方式访问它们:

Vector3::zero;
Vector3::one;
Run Code Online (Sandbox Code Playgroud)

但似乎(如果我理解这个问题)我不能在同一个类中声明一个类实例(就像Vector3定义中的Vector3),可能因为当我声明零和一时,Vector3本身的定义没有得出结论然而.你知道解决这个问题的任何解决方法吗?如果可能的话,我更喜欢不使用任何返回Vector3(0.0,0.0,0.0)或Vector3(1.0,1.0,1.0)的函数,而是使用静态const变量而无需额外的计算

Igo*_*nik 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);
Run Code Online (Sandbox Code Playgroud)