【发布时间】:2013-03-06 04:34:41
【问题描述】:
我之前在 C++ 中将 find_if 用于列表和向量,它运行良好。但是现在,当我尝试将它与集合一起使用时,我收到以下错误:
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)
}
谁能帮我理解问题出在哪里?
【问题讨论】:
-
不,我没有将它包含在集合的 A 类中。如果我可能会问,为什么重载
-
声明
search (A const &i)怎么样 -
这是泄漏内存的好方法。指针完全没有必要。顺便说一句,this 很接近并且有效。
-
set 元素需要弱排序,尝试添加
operator<你的代码应该可以编译,正如 chris 提到的,你的代码泄漏内存 -
您在上面给出的
search()函数的定义是否与您的代码中的完全相同?它是该函数的唯一定义,还是有任何重载?