Comparison functions for 2D points
The overall design seems a bit complicated to me. Setters and getters are often more of an hindrance than a real asset, and the benefits of having a simple struct should not be under-estimated. In particular, it reminds you that you don't have to encapsulate everything, and that defining functions at the point of use is often the most convenient way to proceed:

struct Point { float x, y; };

// ...

// here I need to compare points by y and then x
auto best = std::max_element(v.begin(), v.end(), [](auto point_a, auto point_b) {
    return std::tie(point_a.y, point_a.x) &lt; std::tie(point_b.y, point_b.x);
    //      -&gt; tie gives you the lexicographic comparison for free
});

// and there by angle with etc.
auto widest = std::max_element(v.begin(), v.end(), [origin](auto point_a, auto point_b) {
    // ...
});


In a nutshell, why having a namespace and custom classes where you can simply use a lambda?