gpt4 book ai didi

c++ - 数据类型与模板参数不同的模板对象

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:34 27 4
gpt4 key购买 nike

我有一个模板化类,我想要一个成员函数使用任何模板参数接收该类的对象。所以它应该能够运行类似的东西:

main(){
A<double> object1;
A<double> object2;
A<int> object3;

object1.f(object2);
object1.f(object3);
}

这是我目前所拥有的,但它似乎不起作用,因为它假定参数必须与调用对象的类型完全相同:

template<typename T>
class A
{
void f(A<T> &a);
}

有什么想法吗?提前致谢。

最佳答案

f本身需要是一个模板,有自己的模板参数:

template<typename T>
class A
{
template <typename U>
void f(A<U>& a);
}

当您调用 object1.f(object2) 时, f将用 U 实例化= double ;当你调用object1.f(object3) , f将用 U 实例化= int .

在这两种情况下 T = double因为object1类型为 A<double>T是类模板的模板参数 A .

关于c++ - 数据类型与模板参数不同的模板对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888314/

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