无法重载operator<
。我正在尝试重载operator<
,以便可以根据Line2D
的pt1
对x
对象进行排序。但是我在弄清楚如何声明函数时遇到了麻烦。
我收到错误消息:object has type qualifiers that are not compatible with the member function "Point2D::getX"
。
我试过的是:删除const
,而不是Point2D &l2dobj
。
class Line2D
{
private:
Point2D pt1;
Point2D pt2;
public:
bool operator<( const Line2D &l2dobj)
{
return (pt1.getX() < l2dobj.pt1.getX());
}
}
class Point2D
{
protected:
int x;
int y;
public:
int getX();
int getY();
}
最佳答案
Point2D::getX不接受const实例,当它是const引用时,不能将其应用于l2dobj,请将getX(和一个先验getY)更改为:
class Point2D
{
protected:
int x;
int y;
public:
int getX() const;
int getY() const;
};
通常,您可以越多地声明const方法,其参数也应相同