I'm trying to make a vector class with predefined static constants for up, right and forward because these should be the same in all cases. How should this be defined and is it even possible?
I'm trying to do something like this:
template <class T> class vec3
{
public:
vec3(T x = 0, T y = 0, T z = 0) :
x(x),
y(y),
z(z)
{
}
static const vec3<T> right;
static const vec3<T> up;
static const vec3<T> forward;
T x, y, z;
}
cpp:
#include "vec3.h"
template <typename T>
const vec3<T>::right(1, 0, 0);
template <typename T>
const vec3<T>::up(0, 1, 0);
template <typename T>
const vec3<T>::forward(0, 0, 1);
This results in a syntax error.
static const vec3 right;
in class. – FabrianeT
. – Fabriane= vec3(1,0,0);
'vec3<T>::right': a static data member with an in-class initializer must have non-volatile const integral type` – Jabintemplate <typename T> const vec3<T> vec3<T>::right(1, 0, 0);
in the header! – Gwyngwynetherror: expected ‘;’ after class definition
– Gwyngwyneth