【发布时间】:2013-04-14 18:42:50
【问题描述】:
我为移动平均线编写了一个简单的类,可以与 AVR 一起使用。
template<typename T, typename Tsum = int32_t>
class MovingAverage { ... }
但是现在我想将这个类专门用于浮点而不复制和粘贴整个类主体并将所有 T 和 Tsum 更改为浮点,并且我不需要使用两个模板参数。 Tsum 是“sum”变量的类型,其中所有传递的 T 类型的值都被汇总。如果 T 是 'uint8_t',最好使用 'uint32_t' 作为总和,但对于 float 或 double,不需要使用精度更高的数据类型,因此我只需要一个参数。我认为它可以这样工作:
typedef MovingAverage<float, float> MovingAverage<float>
或者这样:
template<>
class MovingAverage<float> : public MovingAverage<float, float> {};
但我错了,我只找到了我必须编写两次代码的解决方案。
有没有办法只编写一次课程,然后以我喜欢的方式对其进行专门化? 提前致谢!
【问题讨论】:
标签: c++ templates template-specialization