gpt4 book ai didi

c++ - 为实例化模板创建别名

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:24:01 25 4
gpt4 key购买 nike

我最初有许多信号处理滤波器类,除了一些定义滤波器特性的常量外,它们是相同的,所以我决定将它们更改为模板类以实现可维护性和可扩展性。在这种情况下,出于性能和内存管理的原因,首选模板而不是构造函数参数;它适用于嵌入式系统。

因此我有一个模板类的形式:

template <int SIZE, int SCALE_MULTIPLIER, int SCALE_SHIFT>
class cBoxcarFilter
{
public:
// Allow access to SIZE at runtime.
static const int FILTER_SIZE = SIZE ;
...
}

我明确地实例化了,例如:

template class cBoxcarFilter<8, 1, 3>

问题是当我需要访问它需要的 FILTER_SIZE 成员时:

cBoxcarFilter<8, 1, 3>::FILTER_SIZE

这使得对 FILTER_SIZE 的访问变得多余,因为它必须在参数中重复。我对这个问题的解决方案是:

// Create an alias for filter
#define cSpecialistBoxcarFilter cBoxcarFilter<8, 1, 3>
template class cSpecialistBoxcarFilter ;

然后我可以这样访问 FILTER_SIZE:

cSpecialistBoxcarFilter::FILTER_SIZE

与原始非模板版本一样,这也具有为每个过滤器实例提供有意义的唯一名称的优势,但使用看起来像类的宏对我来说似乎有点臭,因为它具有不同的范围语义。

有没有更好的方法为模板实例创建别名类名?

最佳答案

是的,typedef!

typedef cBoxcarFilter<8, 1, 3> cSpecialistBoxcarFilter;

关于c++ - 为实例化模板创建别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4196824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com