【发布时间】:2014-04-12 01:57:11
【问题描述】:
我有一个类,它有指向对象的指针列表,这些对象需要使用作为该类成员的比较器进行排序:
class VoronoiDiagram
{
public:
void BuildVoronoi();
private:
list<shared_ptr<QPointF>> inputPoints
QPointF currentVoronoiPoint;
bool compairingPointsPredictate(shared_ptr<QPointF> a, shared_ptr<QPointF> b) { float d1 = (a->x()-currentVoronoiPoint.x())*(a->x()-currentVoronoiPoint.x()) + (a->y()-currentVoronoiPoint.y())*(a->y()-currentVoronoiPoint.y());
float d2 = (b->x()-currentVoronoiPoint.x())*(b->x()-currentVoronoiPoint.x()) + (b->y()-currentVoronoiPoint.y())*(b->y()-currentVoronoiPoint.y());
return d1 < d2; };
};
我在 BuildVoronoi() 中调用这个:
inputPoints.sort(compairingPointsPredictate);
但这给了我两个错误:C3867 与我的比较器函数和 C2660 与 std::list::sort (不接收 1 个参数)。
对不起我的英语或解释。我真的希望这里有人可以帮助我。谢谢。
【问题讨论】:
-
问题是成员函数有一个隐含的
this的第一个参数,所以它与std::list::sort所需的签名不匹配。那里有很多重复项。 -
那么,你能告诉我解决这个问题的方法吗?