::iterator"编译器无法识别-6ren"> ::iterator"编译器无法识别-现在我有一个这样的模板方法: template void f(typename vector::iterator it) { //implemenation ... } int main() { ve-6ren">
gpt4 book ai didi

c++ - "typename vector::iterator"编译器无法识别

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:58 25 4
gpt4 key购买 nike

现在我有一个这样的模板方法:

template<typename T>
void f(typename vector<T>::iterator it)
{
//implemenation
...
}

int main()
{
vector<int> v;
//initialization of v;
...

f(v.begin());

return 0;
}

但是当我编译为“g++ THIS_FILE -o TARGET_RUNNABLE”时,编译显示

 no matching function for call to ‘f(std::vector<int>::iterator)’
template argument deduction/substitution failed:
couldn't deduce template parameter ‘T’

我意识到在 vector::iterator 之前添加关键字 "typename"。但它仍然是错误的。有人知道如何解决这个问题吗?

最佳答案

你的函数接受一个迭代器,但你试图传递一个 vector 。你可能是说 f(v.begin())或类似的东西。

此外,正如@chris 指出的那样,T处于不可推导的上下文中。它必须明确提供,如 f<int>(v.begin());

关于c++ - "typename vector<T>::iterator"编译器无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418035/

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