gpt4 book ai didi

c++ - 使用模板进行参数转换出错

转载 作者:行者123 更新时间:2023-11-28 00:46:07 29 4
gpt4 key购买 nike

我有一个函数模板,它接受一个 vector 和一个给定类型的元素,并返回元素在 vector 中的位置。这是此函数模板的代码:

template<class T>
int findElement(const vector<T> &vec, const T &ele)
{
for(size_t i = 0; i < vec.size(); i++)
{
if(ele == vec[i])
return i;
}
return -1;
}

这是函数调用:

findElement<double>(intVec, ele);

但是当我调用这个函数时出现这个错误:

error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'const std::vector<_Ty,_Ax> &'

即使我在函数模板定义中删除 vector 的const,这个错误也是一样的:

error C2664: 'findElement' : cannot convert parameter 1 from 'std::vector<_Ty>' to 'std::vector<_Ty,_Ax> &'

但是,当我将函数调用为

findElement(intVec, ele)

我没有收到任何错误。

这种行为的原因是什么?

最佳答案

似乎编译器无法转换 vector<double>vector<int> .因为按逻辑方式,intVec是整数 vector ,不是吗?你说编译器,你想要 vector double 。您无法转换 vector<T>vector<U> , 自 vector没有关注 conversion constructor ,这很好。

关于c++ - 使用模板进行参数转换出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16184112/

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