gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:21 25 4
gpt4 key购买 nike

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

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) {
...
}

有什么方法可以让函数定义行不那么长吗?有一堆这样定义的方法让我的代码难以阅读。

我试过像这样的typedef

template<class tempParam1, class tempParam2, class tempParam3>
typedef Foo<tempParam1, tempParam2, tempParam3> FooClass;
int FooClass::Bar(int funcParam1, int funcParam2, int funcParam3) {
...
}

但是编译器 (g++) 报错(“错误:‘typedef’的模板声明”)。

谢谢!

最佳答案

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

也许您可以使用 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;

等等

C++11 确实引入了 using 声明,这些声明实际上是“模板化类型定义”,但它们不能用于函数定义的嵌套名称说明符中,而这正是您要简化的内容。

关于c++ - 具有泛型类方法定义的长模板参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com