c ++限定符错误

时间:2010-10-13 19:48:08

标签: c++ const qualifiers

我已经开始为我需要的库编写一些代码了。以下代码给出了错误

class node {
public:
    node() { }
    node(const node&);
    ~node() { }

    luint getID() { return this->ID; }
    node& operator=(const node&);
protected:
    luint ID;
    std::vector<node*> neighbors;
};
node::node( const node& inNode) {
    *this = inNode;
}

node& node::operator=(const node& inNode) {
    ID = inNode.getID();
}

以下内容:

  

graph.cpp:在成员函数'node&amp;   node :: operator =(const node&amp;)':   graph.cpp:16:错误:传递'const   node'作为'luint'的'this'参数   node :: getID()'丢弃限定符

我的代码有什么问题吗?

谢谢,

3 个答案:

答案 0 :(得分:3)

您的inNode被声明为const,这意味着您只能在其上调用const个成员函数。您必须将const修饰符添加到getID以告诉编译器它不会修改对象:

luint getID() const { return this->ID; }

答案 1 :(得分:1)

在operator =函数中,inNode是常量。函数getID不是常量,因此调用它会丢弃inNode的常量。只需使用getID const:

luint getID() const { return this->ID; }

答案 2 :(得分:0)

你需要制作getID()const。