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