我有以下代码:
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));
^
有什么建议吗?
答案 0 :(得分:0)
方法getMovie返回一个对象。当你调用getMovie时,会创建一个temporay对象作为return。引用此临时对象不是您想要的,因为该对象在for循环体的末尾被销毁。 解决方案是在getMovie中创建一个对象(使用new)并将指针返回给新对象。将此对象指针添加到数组。当不再需要Array时,删除Array中的项目。