1
我有以下代碼:C++:錯誤:服用的地址臨時[-fpermissive]
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));
^
有什麼建議嗎?
* + =操作符將電影的每個元素添加到此集合* - 您的'+ ='不*執行此操作。如果確實如此,添加的函數會有一個類似於此的原型:'add(Movie&movie)'。 – PaulMcKenzie
將'&&與臨時對象一起使用是不合法的。但是,除非您顯示'add'函數中的內容並顯示您通常如何調用'add'函數,否則沒有人會提出修復建議。如果該函數添加指針而不是從指向位置進行復制,那將會非常糟糕。解決方案將涉及更改'add'或'getMovie'函數是否一致,它們應該都具有值語義或者都具有指針語義。 –