Я пытаюсь создать векторный класс с предопределенными статическими константами для вверх, вправо и вперед, потому что они должны быть одинаковыми во всех случаях. Как это можно определить и возможно ли это?Как определить статическую константную переменную класса шаблона
Я пытаюсь сделать что-то вроде этого:
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);
Это приводит к синтаксической ошибке.
Он должен быть 'статическими const vec3 right; 'в классе. – Jarod42
Кстати, я сомневаюсь, что вы хотите определение в .cpp, поскольку оно продолжает зависеть от 'T'. – Jarod42
@ Jarod42 как он будет определен в заголовке? Если я попробую '= vec3 (1,0,0);' 'vec3 :: right ': элемент статических данных с инициализатором в классе должен иметь нелетучий константный интегральный тип' –
Duckdoom5