2014-05-15 54 views
0

我有一個指向某個對象的指針的列表。 我想複製列表,但與新的指針。指針無循環的複製列表

我的意思是列表中的每個元素,做新的對象,並在新列表中插入新的地址。

我嘗試使用:

std::list<Course*> tmp; 

tmp = courses; // courses is list<Course*>. 

std::for_each(tmp.begin(), tmp.end(), ReplaceAllCells()); 



class ReplaceAllCells { 
public: 
    ReplaceAllCells(){} 
    void operator()(Course* course) { 
     course = new Course(*course); 
    } 
}; 

後調用函數我得到同樣的指針新的列表... TMP的值沒有改變.. 我怎麼能修復不使用任何循環? 謝謝。

+1

您的'Shift'鍵是否損壞? – ooga

+0

我有點像Froot循環。 –

回答

1

如果不使用引用類型,則函數參數按值傳入C中。當你有:

void f(T t) 
{ 
    t = something..... 
} 

這隻會影響本地副本t,而不是被指定的參數來調用這個函數的變量。無論T爲指針類型沒有什麼區別

,如果你想修改它,你需要接受引用的說法,這裏T &t,或者在你的情況Course * &course