我试图重载'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]

最佳答案

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

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

关于c++ - 重载 map 的<<运算符时遇到麻烦,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16408996/

10-14 16:48