C ++模板typedef

五迷三道 提交于 2020-02-27 13:51:12

我有一堂课

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>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!