我遇到了一个奇怪的问题。当我尝试编写一个返回指向子类的指针的函数时,该子类交换了该子类的另一个实例,但出现“错误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/

10-13 08:19