find_if in set in C++:无法解析的重载函数类型
问题描述:
我已经使用find_if与列表和C++中的向量,它工作正常。但现在,当我尝试带套,我得到以下错误使用它:find_if in set in 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)
}
谁能帮助我了解问题出在哪里?
答
有多个函数名为search
- 名称被重载。要将指针search
传递到find_if
,您需要指定哪一个。最直接的方法是指定static_cast< bool (*)(A) >(cont)
。
不,我没有把这个包含在A类里面。如果我可能会问,为什么会超载 FranXh 2013-03-06 04:42:17
如何声明'搜索(一个const&i)' – 2013-03-06 04:44:15
这是一个可爱的方式来泄漏内存。指针是完全没有必要的。顺便说一句,[this](http://liveworkspace.org/code/3v0m5c%247)是密切合作的。 – chris 2013-03-06 04:45:03