У меня есть этот 3D шаблон вектораинициализация распорки для специализированного шаблона вектора
template <class TYPE, class VEC>
class Vec3TYPE{
public:
union{
struct{ TYPE x,y,z; };
struct{ TYPE a,b,c; };
TYPE array[3];
};
inline void set(const VEC& a){ x=a.x; z=a.y; z=a.z; };
inline void add(const VEC& a){ x+=a.x; z+=a.y; z+=a.z; };
// + some other methods .... doesn't matter
}
специализирована для двойного поплавка и Int
class Vec3i : public Vec3TYPE< int, Vec3i > { };
class Vec3f : public Vec3TYPE< float, Vec3f > { };
class Vec3d : public Vec3TYPE< double, Vec3d > { };
Я хотел бы сделать следующие вещи:
Инициализировать массив Vec3d под брекетами, например:
Vec3f myVec3fs[2] = { {1.0f,2.0f,3.0f}, {3.0f,2.0f,1.0f} };
проход {1.0f, 2.0f, 3.0f} к функции в качестве аргумента типа Vec3f, как это:
float someFunc(const Vec3f& a);
float result = someFunc({1.0f,2.0f,3.0f});
Vec3d myVec3f;
myVec3f.set({3.0f,2.0f,1.0f});
myVec3f.add({1.0f,2.0f,3.0f});
Прежде я обобщил мой класс Vec3 с помощью шаблонов (то есть, когда я определил Vec3d с нуля) , он работал просто отлично (по крайней мере, со стандартом C++ 11).
Что такое ошибка и где вы определяете параметры шаблона? Компилятор не может выводить их из параметров конструктора. – MikeMB