重载'<'时遇到问题地图的操作员

时间:2013-05-06 23:41:35

标签: c++ map stl operator-overloading

我正在尝试重载'&lt;'运算符,以便我可以在项目中使用std :: map。类定义中的原型如下所示:bool operator<(const Vertex&);,函数体如下所示:

bool Vertex::operator <(const Vertex& other){
    //incomplete, just a placeholder for now
    if(px != other.px){
        return px < other.px;
    }
    return false;
}

我得到的错误是:/usr/include/c++/4.7/bits/stl_function.h:237:22: error: passing ‘const Vertex’ as ‘this’ argument of ‘const bool Vertex::operator<(Vertex)’ discards qualifiers [-fpermissive]

2 个答案:

答案 0 :(得分:1)

您的功能需要const限定符:

bool Vertex::operator <(const Vertex& other) const {
    //...
}

这意味着可以在const个对象上调用它。

答案 1 :(得分:1)

由于operator<重载不会修改this指向的对象,因此您应将其标记为const成员函数。也就是说,对于声明,在末尾添加const

class Vertex {
  // ...
  bool operator<(const Vertex& other) const;
  // ...
};