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 的值没有改变......我怎样才能在不使用任何循环的情况下解决这个问题?谢谢。

4

1 回答 1

1

如果您不使用引用类型,则函数参数在 C 中按值传递。当你有:

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

这只会影响本地副本t,而不是作为此函数调用的参数给出的变量。是否T是指针类型没有区别

如果要在T &t此处或在您的情况下修改参数,则需要通过引用接受参数Course * &course

于 2014-05-15T23:28:24.737 回答