2015-06-05 84 views
0

为什么我无法修改此指针?出现编译错误“错误:作为赋值左操作数所需的左值”。 以下是节目无法修改此指针

#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

因为你不能; '这'不是一个左值。你希望通过这样做来实现什么? – molbdnilo

+0

但“this”不是一个常量指针? –

+0

您可以更改成员的值('this-> x = t-> x'),但不能指向对象本身。 – anxieux

回答

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;} 
+0

谢谢sean..i得到它了... –