我有一堂课
template<size_t N, size_t M>
class Matrix {
// ....
};
我想做一个typedef
来创建一个Vector
(列向量),它等效于大小为N和1的Matrix
。
typedef Matrix<N,1> Vector<N>;
产生编译错误。 以下创建类似的东西,但不完全是我想要的东西:
template <size_t N>
class Vector: public Matrix<N,1>
{ };
是否有解决方案或不太昂贵的解决方法/最佳实践?
#1楼
C ++ 11添加了别名声明 ,这些声明是typedef
泛化,允许使用模板:
template <size_t N>
using Vector = Matrix<N, 1>;
Vector<3>
类型与Matrix<3, 1>
Vector<3>
等效。
在C ++ 03中,最接近的近似值为:
template <size_t N>
struct Vector
{
typedef Matrix<N, 1> type;
};
在这里,类型Vector<3>::type
等效于Matrix<3, 1>
。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3173987