gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:44:45 26 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。当我尝试编写一个返回指向子类的指针的函数时,我将其交换为该子类的另一个实例,但出现“错误 C2106:'=':左操作数必须是左值”错误。

问题出在 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++ 有点陌生,所以问题可能非常简单。非常感谢任何帮助。

最佳答案

从函数返回的指针是对象中指针的拷贝。它是临时的,您不能分配给它。即使你可以分配给它,它也没有用,因为它不再连接到你的对象中的指针。如果您希望能够在从函数返回对象指针后对其进行赋值,则需要通过引用返回指针。

subClass *& getMe() {
return pointer;
}

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

subclass * const & getme() const {
return pointer;
}

关于C++ 返回指针值不可更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com