C++ 使用模板构造函数完全专门化模板类
我有一个模板类,定义如下:C++ 使用模板构造函数完全专门化模板类,c++,template-specialization,C++,Template Specialization,我有一个模板类,定义如下: template<unsigned int N, unsigned int L> class Matrix { public: Matrix(const float k = 0.0f) { for(unsigned int i = 0; i < N; ++i) for(unsigned int j = 0; j < L; ++j)
template<unsigned int N, unsigned int L>
class Matrix
{
public:
Matrix(const float k = 0.0f)
{
for(unsigned int i = 0; i < N; ++i)
for(unsigned int j = 0; j < L; ++j)
{
if(i == j) m[i][j] = k;
else m[i][j] = 0.0f;
}
}
//With other constuctors, methods and operators
protected:
float m[N][L];
};
(它将做不同的事情)
我应该如何进行规格化?其他函数不会从我的specilization矩阵中改变,但是如果我对类进行specilization,我将必须对每个成员进行specilization,不是吗 我的猜测是只指定必须使用的成员函数,然后使用
using Matrix4 = Matrix<4u, 4u>
使用矩阵x4=矩阵
够了吗?我是否能够在规范中使用矩阵中的运算符,如:
模板
Vec3矩阵::运算符*(常量Vec3和vec)
{
vec4vec4d(vec);
vec4d=矩阵::运算符*(vec);
返回Vec3(vec4d.x,vec4d.y,vec4d.z);
}
另外,我打算在Matrix4中使用继承
谢谢你抽出时间来好吧,我说的似乎很管用(我有打字错误,我找不到…) 解决方案:
template <>
Vec3 Matrix<4u, 4u>::operator*(const Vec3& vec)
{
Vec4 vec4d(vec);
vec4d = Matrix<4u, 4u>::operator*(vec);
return Vec3(vec4d.x, vec4d.y, vec4d.z);
}
using Matrix4 = Matrix<4u, 4u>
模板
Vec3矩阵::运算符*(常量Vec3和vec)
{
vec4vec4d(vec);
vec4d=矩阵::运算符*(vec);
返回Vec3(vec4d.x,vec4d.y,vec4d.z);
}
使用Matrix4=矩阵
template <>
Vec3 Matrix<4u, 4u>::operator*(const Vec3& vec)
{
Vec4 vec4d(vec);
vec4d = Matrix<4u, 4u>::operator*(vec);
return Vec3(vec4d.x, vec4d.y, vec4d.z);
}
template <>
Vec3 Matrix<4u, 4u>::operator*(const Vec3& vec)
{
Vec4 vec4d(vec);
vec4d = Matrix<4u, 4u>::operator*(vec);
return Vec3(vec4d.x, vec4d.y, vec4d.z);
}
using Matrix4 = Matrix<4u, 4u>