2014-05-15 50 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