无法修改此指针

时间:2015-06-05 14:48:50

标签: c++

为什么我无法修改此指针?获取编译错误“错误:左值作为赋值的左操作数需要左值”。 以下是该计划

#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;
}

1 个答案:

答案 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;}