我已经开始为我需要的库编写一些代码了。以下代码给出了错误
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()'丢弃限定符
我的代码有什么问题吗?
谢谢,
答案 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。