C++ 模板类型定义

标签 c++ templates c++11 typedef

我有课

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

我想创建一个 typedef,它创建一个 Vector(列 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> .

关于C++ 模板类型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795023/

相关文章:

c++ - 如何使用 std::function 指向函数模板

c++ - 派生类对象构造后调用虚函数

java - 如何处理无法将时间存储在 int 中?

php - 禁用聪明的通知

c++ - 自动生成函数头,可变参数模板

c++ - 内存满时文件读取失败

C++模板运算符编译错误

c++ - typedef 使用类型名

c++ - 模板类中的条件引用声明

c++ - C++11 中的 std::nearbyint 与 std::round