我最初有许多信号处理过滤器类,除了定义过滤器特性的几个常量外,它们是相同的,因此我决定将它们更改为模板类,以实现可维护性和可扩展性。在这种情况下,将模板优先于构造函数参数有性能和内存管理方面的原因;这是针对嵌入式系统的。
因此,我有一个表单的模板类:
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>
问题是当我需要访问筛选器大小成员时,它需要:
cBoxcarFilter<8, 1, 3>::FILTER_SIZE
这使得访问FILTER_SIZE是多余的,因为它必须在参数中重复。我解决这个问题的办法是:
// Create an alias for filter
#define cSpecialistBoxcarFilter cBoxcarFilter<8, 1, 3>
template class cSpecialistBoxcarFilter ;
然后我可以访问筛选器大小,从而:
cSpecialistBoxcarFilter::FILTER_SIZE
与原始的非模板版本一样,这还有一个优点,即每个过滤器实例的名称都是有意义的唯一名称,但对于我来说,使用一个看起来像类的宏似乎有点难闻,因为它具有不同的作用域语义。
有没有更好的方法为模板实例创建别名类名?