I wanted to create a map with my own string "Point2" as a key, however I get errors and I don't know what causes it since I declared "operator <" for the structure of Point2.
Code:
std::map<Point2, Prop*> m_Props_m; std::map<Point2, Point2> m_Orders; struct Point2 { unsigned int Point2::x; unsigned int Point2::y; Point2& Point2::operator= (const Point2& b) { if (this != &b) { x = bx; y = by; } return *this; } bool Point2::operator== (const Point2& b) { return ( x == bx && y == by); } bool Point2::operator< (const Point2& b) { return ( x+y < b.x+by ); } bool Point2::operator> (const Point2& b) { return ( x+y > b.x+by ); } };
Error:
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(125): error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const Point2' (or there is no acceptable conversion) 1>c:\testing\project\point2.h(34): could be 'bool Point2::operator <(const Point2 &)' 1>while trying to match the argument list '(const Point2, const Point2)' 1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(124) : while compiling class template member function 'bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const' 1> with 1> [ 1> _Ty=Point2 1> ]
Can anyone see the cause of the problem?
source share