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

时间:2015-11-15 17:54:34

标签: c++ arrays operator-overloading overloading

我有以下代码:

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));

                         ^

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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