C++返回指针值不可更改

Jan*_*emb 0 c++

我遇到了一个奇怪的问题.当我尝试编写一个返回指向子类的指针的函数时,我交换了该子类的不同实例,我得到"错误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; 
}
Run Code Online (Sandbox Code Playgroud)

我对c ++有点新意,所以问题可能很简单.任何帮助深表感谢.

Ben*_*ley 5

从函数返回的指针是对象中指针的副本.这是暂时的,你无法分配给它.即使你可以分配它,它也没有用,因为它不再连接到你对象中的指针.如果希望能够在从函数返回后指定对象的指针,则希望通过引用返回指针.

subClass *& getMe() {
    return pointer;
}
Run Code Online (Sandbox Code Playgroud)

您还应该考虑添加一个const重载,以便处理const对象.它可能看起来像这样:

subclass * const & getme() const {
    return pointer;
}
Run Code Online (Sandbox Code Playgroud)