c++ - 重载运算符 < 包含类对象

标签 c++ class sorting operator-overloading

遇到重载问题 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越多越好,它们的参数也一样

关于c++ - 重载运算符 < 包含类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734582/

相关文章:

java - 在java中,我总是需要一个Main类吗?

python - 类型错误 : 'cmp' is an invalid keyword argument for this function

python - Python中嵌套sort(),同时进行多属性函数排序

sql - 如何对包含数字、字符、字符的 varchar 列(SQL)进行排序?

c++ - 在派生类中将函数声明为虚拟函数是否有代码味道?

c++ - g++ 选项显示哪些类是从模板创建的

c++ - 固定大小的浮点类型

c++ - 仿函数作为 C++ 中的基类

python - datetime.date : TypeError: an integer is required. 为什么?

javascript - 我什么时候应该在 JavaScript 中使用数据类型类