我之前使用过find_if和C ++中的列表和向量,它运行良好。但现在,当我尝试使用它时,我会收到以下错误:
error: no matching function for call to ‘find_if(std::set<A, Acmp>::iterator,
std::set<A, Acmp>::iterator, <unresolved overloaded function type>)’|
我的课程如下:
bool searchForA(A i) {
return (i.getVal() > 0);
}
void B::findA()
{
set<A, Acmp> cont;
set<A, Acmp>::iterator it;
A *a1 = new A(5);
A *a2 = new A(7);
cont.insert(*a1);
cont.insert(*a2);
it = find_if (cont.begin(), cont.end(), search)
}
有谁能帮我理解问题出在哪里?
答案 0 :(得分:1)
STL中已有一个名为search
的功能。这可能就是为什么编译器在没有更好的提示的情况下无法解析正确的名称。您可以重命名搜索功能。或者,如果您不想这样做,请尝试将::search
传递给find_if
。
答案 1 :(得分:1)
有多个名为search
的函数 - 名称已重载。要将指向search
的指针传递到find_if
,您需要指定哪一个。最直接的方法是指定static_cast< bool (*)( A ) >( cont )
。