C ++模板typedef
我有一堂课
template<size_t N, size_t M> class Matrix { // .... };
我想创建一个typedef
来创建一个Vector
(列向量),它相当于一个大小为N和1的Matrix
。类似的东西:
typedef Matrix<N,1> Vector<N>;
这会产生编译错误。 以下创建类似的东西,但不完全是我想要的:
template <int N> class Vector: public Matrix<N,1> { };
有没有一个解决方案或不是太昂贵的解决方法/最佳实践呢?
C ++ 11添加了别名声明 ,这是typedef
泛化,允许模板:
template <size_t N> using Vector = Matrix<N, 1>;
Vector<3>
类型等同于Matrix<3, 1>
。
在C ++ 03中,最接近的是:
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
这里, Vector<3>::type
等价于Matrix<3, 1>
。