我正在尝试使用预定义的静态常量为向上,向右和向前创建一个向量类,因为它们在所有情况下应该是相同的.应如何定义,甚至可能?
我正在尝试做这样的事情:
templateclass vec3 { public: vec3(T x = 0, T y = 0, T z = 0) : x(x), y(y), z(z) { } static const vec3 right; static const vec3 up; static const vec3 forward; T x, y, z; }
CPP:
#include "vec3.h" templateconst vec3 ::right(1, 0, 0); template const vec3 ::up(0, 1, 0); template const vec3 ::forward(0, 0, 1);
这会导致语法错误.
它应该是(全部在标题中(如果你想从定义中拆分声明,你可以使用.inl或.hxx)):
templateclass vec3 { public: vec3(T x = 0, T y = 0, T z = 0) : x(x), y(y), z(z) { } static const vec3 right; static const vec3 up; static const vec3 forward; T x, y, z; }; template const vec3 vec3 ::right(1, 0, 0); template const vec3 vec3 ::up(0, 1, 0); template const vec3 vec3 ::forward(0, 0, 1);
演示