Избегайте глобальных переменных.Это начало написания многопоточного кода.
Вместо этого используйте локальные переменные:
Point referencePoint(10,20); //use local variable!
points.sort(Comparator(referencePoint));
Или просто:
points.sort(Comparator(Point(10,20)));
, где Comparator
является функтор определяется как:
struct Comparator
{
Point referencePoint;
explicit Comparator(const Point & pt) : referencePoint(pt) {}
bool operator() (const Point& p1, const Point& p2) const
{
return abs(p1.x - referencePoint.x) < abs(p2.x - referencePoint.x);
}
};
Готово!
Обратите внимание на реализацию operator()
.Это делает класс функтором.