如果我有一个模板类,我稍后在文件中为其定义了一个成员函数,有没有办法避免重复长参数列表?例如
template<class tempParam1, class tempParam2, class tempParam3>
class Foo {
...
int Bar(int funcParam1, int funcParam2, int funcParam3);
}
template<class tempParam1, class tempParam2, class tempParam3>
int Foo<tempParam1, tempParam2, tempParam3>::Bar(int funcParam1, int funcParam2, int funcParam3) {
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让函数定义行不那么长?像这样定义一堆方法使我的代码难以阅读。
我尝试了一个 typedef 像
template<class tempParam1, class tempParam2, class tempParam3>
typedef Foo<tempParam1, tempParam2, tempParam3> FooClass;
int FooClass::Bar(int funcParam1, int funcParam2, int funcParam3) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是编译器(g++)抱怨(“错误:'typedef'的模板声明”)。
谢谢!
如果在作用域内定义成员class {},则无需重复类模板参数。
也许您可以使用特征习语消除一些参数,或者以其他方式从一个参数计算多个参数。
代替
template< typename size_type, typename volume_type, typename width_type >
Run Code Online (Sandbox Code Playgroud)
你可以有
template< typename param_type >
...
typedef typename measurement_traits< param_type >::size_type size_type;
Run Code Online (Sandbox Code Playgroud)
ETC。
C++11 确实引入了 using 声明,这些声明实际上是“模板化 typedef”,但它们不能在函数定义的嵌套名称说明符中使用,而这正是您试图简化的。