在这个问题中,OP 要求提供模板 typedef 的解决方案,这在 C++ 中是不可能的。OP 自己也提出了一个解决方案,但不喜欢它:
template<size_t N, size_t M>
class Matrix {
// ....
};
// Problem - will not compile
typedef Matrix<N,1> Vector<N>;
// Solution
template <int N>
class Vector: public Matrix<N,1>
{ };
我的问题是,与 OP 的解决方案相比,该Helper::type
解决方案给我们带来了哪些优势(假设这些类永远不会被基指针或new
'd 这样使用)?一个空的类在发布时不应该带来任何开销(或者是吗?)。我能看到的唯一缺点是,在调试版本中,您必须在调试时扩展基类。
编辑:除了选定的答案,请参阅@Dani 的答案,他建议继承的版本需要定义构造函数,这是一个额外的不便。