如何为特定类型的模板命名一个简写

How do you name a shorthand for a template of a specific type?

本文关键字:一个 类型      更新时间:2023-10-16

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

Foo<int> number;
Foo<int> location;
...
我知道有一种方法可以通过为这个特定的模板类型定义一个名称来使它更漂亮,这样我就可以有类似的(但更漂亮的)代码,如:
FooInt number;
FooInt location;
...

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

当所有参数都固定时,您可以使用常规的typedef为模板类型创建别名:

typedef Foo<int> FooInt;

你所需要的只是一个别名:

using FooInt = Foo<int>;

除了前面提到的两个版本,我建议您使用Foo<int>。它是自我记录的。其他人必须理解它,如果你以后(比方说2年)看你自己的代码,你也必须理解它。在这些情况下,Foo<int>比其他选项更好。

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

或者,是否有一种方法来实现一个新的类FooInt定义为Int的Foo ?

是的,只需如下声明你的特化类:

class FooInt : public Foo<int> {
}

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

相关文章: