C++ 具有泛型类方法定义的长模板参数列表

C++ 具有泛型类方法定义的长模板参数列表,c++,templates,C++,Templates,如果我有一个模板类(稍后我会在文件中为其定义一个成员函数),有没有办法避免重复长参数列表?比如说 template<class tempParam1, class tempParam2, class tempParam3> class Foo { ... int Bar(int funcParam1, int funcParam2, int funcParam3); } template<class tempParam1, class tempParam2, class

如果我有一个模板类(稍后我会在文件中为其定义一个成员函数),有没有办法避免重复长参数列表?比如说

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) {
  ...
}
模板
福班{
...
int-Bar(int-funcParam1、int-funcParam2、int-funcParam3);
}
模板
int-Foo::Bar(int-funcParam1、int-funcParam2、int-funcParam3){
...
}
有没有办法避免函数定义行太长?有一大堆这样的方法需要定义,这使得我的代码很难阅读

我试过一种像这样的打字机

template<class tempParam1, class tempParam2, class tempParam3>
typedef Foo<tempParam1, tempParam2, tempParam3> FooClass;
int FooClass::Bar(int funcParam1, int funcParam2, int funcParam3) {
  ...
}
模板
typedef Foo Foo类;
int-FooClass::Bar(int-funcParam1、int-funcParam2、int-funcParam3){
...
}
但是编译器(g++)抱怨道(“错误:模板声明'typedef'”)


谢谢

如果在
类{}
范围内定义成员,则无需重复类模板参数

也许您可以使用traits习惯用法删除一些参数,或者从一个参数中计算多个参数

而不是

template< typename size_type, typename volume_type, typename width_type >
模板
你本来可以的

template< typename param_type >
  ...
    typedef typename measurement_traits< param_type >::size_type size_type;
模板
...
typedef typename测量特征<参数类型>::大小类型大小类型;
等等


C++11确实引入了使用声明,这些声明实际上是“模板化的typedef”,但它们不能在函数定义的嵌套名称说明符中使用,这正是您试图简化的。

我想您可以始终使用
\define
。但如果您只使用较短的参数名称,可能会有所帮助。是否为模板参数使用较短的名称?流行的选择是
T
U
,…这些实际上只是愚蠢的例子,但重点是。我不知道有没有什么聪明的把戏。谢谢你的回答!单字母名字,真的吗?这些变量如何比其他变量更适合模板参数?(使用
T
作为唯一的模板参数是可以的,就像一个有一个变量的函数可以称它为
x
,但是你拥有的越多,名称就越长。)一种“类名称空间”的东西会很方便:
模板类名称空间Foo{int Bar(…){//definition definition};//…更多成员定义}
但必须有人为此编写提案;)(此外,即将推出的模块系统可能会提供更好的解决方案)