我有一堂课

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楼 票数:606 已采纳

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>

  ask by Notinlist translate from so

未解决问题?本站智能推荐:

2回复

c ++ extern模板实例化和typedef(gcc)

我试图实例化外部模板但是我想在instantiation子句中使用typedef。 我认为这个例子说的超过千言万语: 如果我尝试实际实例化模板,我会得到相同的错误: 我知道我可以编写(extern) template class myTemplate_base<commo
1回复

为什么C ++ 11中没有模板化的typedef? [重复]

这个问题在这里已有答案: 为什么C ++ 11没有模板typedef? 1个答案 为什么委员会决定不批准模板化的typedef以及模板化using ? 是合法的。 但 是非法的? UPD。 问题为什么C ++ 11没有模板typede
4回复

typedef模板,这可能吗?

是否可以做类似的事情: 实际上,我只想要static const constexpr的别名,因为每次在某个文件中写入它确实很无聊。 我更喜欢c ++ 11中的解决方案。
4回复

模板化的typedef?

我正在使用libgc,一个用于C和C ++的垃圾收集器。 要使STL容器可以收集垃圾,必须使用gc_allocator。 而不是写作 一个人必须写 可以有一种方法来定义类似的东西 我前一段时间检查过,发现它不可能。 但我可能错了,或者可能有另一种方式。
2回复

如何typedef一个模板类? [重复]

这个问题已经在这里有了答案: C ++模板typedef 1回答 我应该如何typedef template class ? 就像是: 我知道两种方式: 我们在C ++ 0x中有什么更好的选择吗?
2回复

如何使用typedef模板函数指针?

我想输入一个指向模板函数的函数指针 。 我已经尝试过这种方式,但没有成功。 对这件事有什么想法吗?
2回复

Typedef指向模板类方法的指针

标题总结了我的问题 - 我需要一个泛型typedef作为指向模板类方法的指针,如下面的代码所述。 typedef必须是通用的。
2回复

可以在模板化函数签名中使用typedef吗?

有没有一种方法可以使用typedef作为模板函数的参数? 还是将类型定义为参数的方法? 假设我想将函数指针传递给此函数: template<typename C, typename ...Args> void test(typedef void (C::*functor)(