提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一堂课
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>
{ };
是否有解决方案或不太昂贵的解决方法/最佳实践?
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>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.