gpt4 book ai didi

c++ - 复制构造函数和调用函数

转载 作者:太空狗 更新时间:2023-10-29 23:38:03 26 4
gpt4 key购买 nike

我试图在复制构造函数中调用访问器函数,但它不起作用。这是我的问题的示例:

啊啊

class A {

public:
//Constructor
A(int d);
//Copy Constructor
A(const A &rhs);

//accessor for data
int getData();

//mutator for data
void setData(int d);

private:
int data;
};

A.cpp

#include "A.h"

//Constructor
A::A(int d) {
this->setData(d);
}

//Copy Constructor
A::A(const A &rhs) {
this->setData(rhs.getData());
}

//accessor for data
int A::getData() {
return data;
}

//mutator for data
void A::setData(int d) {
data = d;
}

当我尝试编译它时,出现以下错误:

error: passing 'const A' as 'this' argument of 'int A::getData()' discards qualifiers

如果我将 rhs.getData() 更改为 rhs.data,则构造函数可以正常工作。我不允许在复制构造函数中调用函数吗?有人可以告诉我我做错了什么吗?

最佳答案

问题是 rhs 被声明为 const,但是 getData() 不是,所以它可能正在修改 rhs 当你调用它时,即使 rhs 应该是常量。由于 getData() 是一个访问器,它也应该是 const:

//accessor for data
int getData() const;

关于c++ - 复制构造函数和调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com