无法重载operator<。我正在尝试重载operator<,以便可以根据Line2Dpt1x对象进行排序。但是我在弄清楚如何声明函数时遇到了麻烦。

我收到错误消息:
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方法,其参数也应相同

10-08 00:44