C+模板类型

C+模板类型

我有课

template<size_t N, size_t M>class Matrix {
    // ....};

我想做一个typedef创建一个Vector(列向量),相当于Matrix尺寸是N和1。类似的东西:

typedef Matrix<N,1> Vector<N>;

这会产生编译错误。以下内容创建了类似的内容,但并不完全是我想要的:

template <int N>class Vector: public Matrix<N,1>{ };

是否有解决方案或不太昂贵的解决办法/最佳实践?


慕哥6287543
浏览 570回答 3
3回答

皈依舞

加入C+11别名声明,它们是typedef,允许模板:template&nbsp;<size_t&nbsp;N>using&nbsp;Vector&nbsp;=&nbsp;Matrix<N,&nbsp;1>;类型Vector<3>等于Matrix<3, 1>.在C+03中,最接近的近似是:template&nbsp;<size_t&nbsp;N>struct&nbsp;Vector{ &nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Matrix<N,&nbsp;1>&nbsp;type;};在这里,类型Vector<3>::type等于Matrix<3, 1>.

青春有我

太好了,我还没见过C+0x的这一部分,我已经有一段时间一直在抱怨模板化的类型.我想我应该更彻底地读一下最后的草稿。&nbsp;

繁花如伊

取决于他的目标。当组合完成时,我避免继承(是的,继承构造函数将使这两种情况都变得更容易),但我也避免了在tyhuif会这样做时进行组合。
打开App,查看更多内容
随时随地看视频慕课网APP