为什么我无法修改此指针?获取编译错误“错误:左值作为赋值的左操作数需要左值”。 以下是该计划
#include<iostream>
using namespace std;
class Test
{
private:
int x;
public:
Test(int x = 0) { this->x = x; }
void change(Test *t) { this = t; }
void print() { cout << "x = " << x << endl; }
};
int main()
{
Test obj(5);
Test *ptr = new Test (10);
obj.change(ptr);
obj.print();
return 0;
}
答案 0 :(得分:2)
您无法分配到this
,您应该将其视为概念上的常量指针Test *const this
。
您在change()
中实际需要做的只是复制t
的内容:
void change(Test *t) {this->x = t->x;}
如果你想成为一名优秀的C ++公民,你也可以让t
保持不变:
void change(const Test *t) {this->x = t->x;}