gpt4 book ai didi

将模板化类作为参数的 C++ 方法

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

我有一个模板类

Vector<class T, int N> 

其中 T 是组件的类型(例如 double),n 是组件的数量(因此对于 3D vector N=3)

现在我想写一个这样的方法

double findStepsize(Vector<double,2> v)
{..}

我也想对三维和更高维 vector 执行此操作。当然我可以为更高的维度引入更多的方法,但是这些方法会有很多冗余代码,所以我想要一个更通用的解决方案。有没有一种方法可以创建一个方法,该方法采用模板化类而不进一步专门化它(在这种情况下没有指定 T 或 N)?喜欢

double findStepsize(Vector<T,N> v)

?

最佳答案

是的

template<typename T, int N>
double findStepsize(Vector<T,N> v)
{..}

如果您使用特定的 Vector<T, N> 调用它,编译器将推导 TN到适当的值。

Vector<int, 2> v;
// ... fill ...
findStepsize(v); /* works */

上面的值参数与您的示例匹配,但最好通过 const 引用(改为 Vector<T, N> const&)传递需要在其复制构造函数中工作的用户定义类。所以你避免了拷贝,但仍然不能改变调用者的参数。

关于将模板化类作为参数的 C++ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723285/

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