gpt4 book ai didi

C++:错误:获取临时 [-fpermissive] 的地址

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:51 28 4
gpt4 key购买 nike

我有以下代码:

int Array::getSize(){ 
//do something
}
Movie Array::getMovie(int i){
//do something
}

void Array::add(Movie* movie){
//do something
}

Array& Array::operator+=(Array& movies){
for (int i = 0; i < movies.getSize(); i++){
add(&movies.getMovie(i));
}
return *this;

}

+= 运算符将 movies 的每个元素添加到 this 集合当我编译我的程序时,我收到此错误消息:

Array.cc:40:29: error: taking address of temporary [-fpermissive]

add(&movies.getMovie(i));

^

有什么建议吗?

最佳答案

方法 getMovie 返回一个对象。当您调用 getMovie 时,会创建一个临时对象作为返回值。引用这个临时对象不是您想要的,因为该对象在 for 循环主体的末尾被销毁。一种解决方案是在 getMovie 中创建一个对象(使用 new)并返回指向新对象的指针。将此对象指针添加到数组。当 Array 不再需要时,删除 Array 中的项。

关于C++:错误:获取临时 [-fpermissive] 的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33722963/

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