2014-05-15 2 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 Loops를 좋아한다. –

답변

1

참조 형식을 사용하지 않으면 함수 인수가 C에서 값으로 전달됩니다. 당신이있을 때 :

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

을이 로컬 복사본 t이 아닌이 함수 호출에 인수로 주어진 변수에 영향을 미친다. T이 포인터 유형인지 여부

T &t 여기 또는 케이스 Course * &course을 수정하려면 참조로 인수를 수락해야합니다.