c++限定符错误

发布于 2024-09-27 00:36:43 字数 649 浏览 4 评论 0原文

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

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&中 节点::运算符=(const 节点&)': graph.cpp:16: 错误: 传递 'const 节点”作为“luint”的“this”参数 node::getID()' 丢弃限定符

我的代码有什么问题吗?

谢谢,

I have begun writing some code for a library I need. The following code gives me an error

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();
}

which is the following:

graph.cpp: In member function 'node&
node::operator=(const node&)':
graph.cpp:16: error: passing 'const
node' as 'this' argument of 'luint
node::getID()' discards qualifiers

Did I do anything wrong with the code?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

以可爱出名 2024-10-04 00:36:43

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

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

Your inNode is declared to be const, which means you can only invoke const member functions on it. You'll have to add the const modifier to getID to tell the compiler that it won't modify the object:

luint getID() const { return this->ID; }
等待我真够勒 2024-10-04 00:36:43

在您的operator=函数中,inNode是常量。函数getID不是常量,因此调用它会丢弃inNode的常量性。只需将 getID 设置为常量即可:

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

In your operator= function, inNode is constant. The function getID is not constant, so calling it is discarding the constness of inNode. Just make getID const:

luint getID() const { return this->ID; }
西瓜 2024-10-04 00:36:43

您需要将 getID() 设置为常量。

You need to make getID() const.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文