我遇到了一个奇怪的问题。当我尝试编写一个返回指向子类的指针的函数时,该子类交换了该子类的另一个实例,但出现“错误C2106:'=':左操作数必须为L值”错误。
问题出在one->getMe() = two;
行:
class subClass{};
class someClass{
public:
subClass * pointer;
someClass(){
pointer = new subClass;
}
subClass * getMe(){
return pointer;
}
};
int main(){
someClass * one = new someClass;
subClass * two = new subClass;
one->getMe() = two;
}
我对C ++有点陌生,因此问题可能非常简单。任何帮助深表感谢。
最佳答案
线
one->getMe() = two;
试图将指针在2处分配给one-> getMe()。但是one-> getMe()返回无法分配给的临时副本。如果您想通过引用返回指针并因此能够对其进行更改,则可以使用签名
subClass *& getMe();
正如其他人所建议的。
话虽这么说,您正在公开一个类的内部工作原理,供所有人查看和修改,尤其是指向堆上对象的指针,这些指针可能正确分配,也可能未正确分配,这是不明智的。
关于c++ - C++返回的指针值不可更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18392760/