gpt4 book ai didi

c++ - 关于使用这个指针的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:23:30 27 4
gpt4 key购买 nike

我尝试使用类内部的方法和 this 指针将一个指针复制到另一个指针,如下所示。我给出了完整的测试代码,以便清楚发生了什么。

class test  {
private:
int x;
public:
void setx(int x);
int getx(void);
void copy(test *temp);
};

void test::setx(int x) {
this->x = x;
}

int test::getx(void) {
return this->x;
}

void test::copy(test *temp) {
this = temp;
}

我从 main 访问这个方法如下:

int main()  {
test a;
a.setx(4);
cout << a.getx()<<endl;
test *b = new test;
b->setx(4);
cout << b->getx()<<endl;
test *c;
c=b;
cout << c->getx()<<endl;
test *d;
d->copy(b);
cout << d->getx()<<endl;
}

但是它给出了以下错误

In member function ‘void test::copy(test*)’:
error: lvalue required as left operand of assignment

除复制部分外,所有其他涉及 this 指针的方法都可以正常工作。我在使用 this 指针时是否犯了一些基本错误?

最佳答案

你不能覆盖这个this 指针是一个常量,因此您不能更改它。那到底意味着什么?您无法更改所在的对象。您可以更改该对象内的值,但不能更改对象本身。

您需要通过值(通过对象中存储的内容)而不是指针来复制其他对象。

另外,你不应该有一个叫做copy的函数;这就是复制构造函数和复制赋值运算符的用途。

关于c++ - 关于使用这个指针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7144217/

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