假设我经常使用Foo
模板类型的模板类int
:
Foo<int> number;
Foo<int> location;
...
我知道有一种方法可以通过为这个特定的模板类型定义一个名称来使这个更漂亮,这样我就可以拥有像这样的等效(但更漂亮)的代码:
FooInt number;
FooInt location;
...
我相信这可以通过编译器指令来完成,#define
但我不确定具体细节。或者,有没有办法只实现一个FooInt
定义为的新类Foo<int>
?
当所有参数都固定时,您可以使用正typedef
则为模板类型创建别名:
typedef Foo<int> FooInt;
您只需要一个别名:
using FooInt = Foo<int>;
请注意,这仅在 C++11 中可用。
除了已经提到的两个版本,我建议Foo<int>
. 它是自我记录的。其他人必须理解它,如果您稍后(假设 2 年)查看自己的代码,您也必须理解它。在这些情况下Foo<int>
,比替代品更好。
typedef
是答案,但作为信息的补充......
或者,有没有办法只实现一个定义为 Foo 的 Int 的新类 FooInt ?
是的,只需按如下方式声明您的专业类:
class FooInt : public Foo<int> {
}
注意:我注意到这是一个很好的方法,但只有这是可行的。