나는 두 개의 클래스 A가 있고 B가 모두 회원이 아래와 같이 있습니다표준 : : 사본이 작동하지 않습니다 제대로
class A {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
class B {
...
std::vector<std::vector<std::vector<size_t>>> grid;
}
나는 A와 B :: 그리드에서 복사 표준 : : 사본을 사용할 때 내가 발견 :: 그리드, 그것은 실패합니다.
// Here is in B's constructor.
// I initialize B::grid with the same size of A::grid
grid = vector<vector<vector<size_t>>>(GetSetting().grid_cols());
for (int i = 0; i < GetSetting().grid_cols(); i++) {
grid[i] = vector<vector<size_t>>(GetSetting().grid_rows());
for (int j = 0; j < GetSetting().grid_rows(); j++) {
grid[i][j].reserve(a.grid[i][j].size());
}
}
// Copy from A to B
std::copy(a.grid.begin(), a.grid.end(), std::back_inserter(grid));
을하지만 일부를 초기화 제거하는 경우, 다음 표준 : : 복사가 잘 작동합니다 : 여기 내가 할 것입니다. 부품 초기화가 잘못 되었습니까?
왜 그리드를하지 않는거야? –
@ T.C. , 나는 또한 연산자 =()를 사용하려고 시도하고 올바르게 작동합니다. 나는 단지 std :: copy를 사용하면서 무엇이 잘못 되었는가를 알고 싶다. – Josper