如何命名特定类型模板的速记?

时间:2013-06-11 22:59:49

标签: c++ templates

假设我经常使用模板类Foo经常使用模板类型int

Foo<int> number;
Foo<int> location;
...

我知道有一种方法可以通过定义这个特定模板类型的名称来使这个更漂亮,这样我就可以拥有相同(但更漂亮)的代码:

FooInt number;
FooInt location;
...

我相信这可以通过编译器指令#define完成,但我不确定具体细节。或者,有没有办法实现一个被定义为FooInt的新类Foo<int>

4 个答案:

答案 0 :(得分:11)

当修复所有参数后,您可以使用常规typedef为模板类型创建别名:

typedef Foo<int> FooInt;

答案 1 :(得分:4)

你需要的只是一个别名:

using FooInt = Foo<int>;

请注意,这仅适用于C ++ 11。

答案 2 :(得分:1)

除了已经提到的两个版本,我建议Foo<int>。这是自我记录。其他人必须了解它,如果你稍后看一下你自己的代码(比方说2年)你也必须理解它。在这些情况下,Foo<int>优于替代方案。

答案 3 :(得分:0)

typedef是答案,但作为信息的补充......

  

或者,有没有办法实现一个新的类FooInt   被定义为Int的Foo?

是的,只需按如下方式声明您的专业类:

class FooInt : public Foo<int> {
}

注意:我注意到这是一个很好的方法,但只是这是可行的。