【发布时间】:2016-07-08 16:37:27
【问题描述】:
我遇到了一些分段错误问题,我想我知道问题出在哪里,但我不确定如何解决它
我有一个这样的网格
class Grid {
std::vector<std::vector<Cell>> grid;
...
};
我有一堆成员函数使用该网格。我的功能之一是初始化功能
void Grid::init(int n) {
gridSize=n;
vector<vector<Cell>> theGrid(n+1, vector<Cell>(n+1));
for(int r=0; r<n; ++r) {
for(int c=0; c<n; ++c) {
theGrid[r][n] = Cell();
theGrid[r][n].setCoords(r,c);
theGrid[r].push_back(theGrid[r][c]);
}
}
但是,一旦我初始化了网格,我的印象是我可以在我的其他成员函数中调用 theGrid[x][y] 并且只要我调用这些方法,我就会得到我在这里初始化的相同的在同一个物体上。每当我尝试在我的其他成员函数中访问 theGrid 来处理它们时,我都会遇到分段错误,除非我包含
vector<vector<Cell>> theGrid(n+1, vector<Cell>(n+1));
这基本上意味着我没有使用我想要的网格。我该如何解决这个问题?我希望能够在其他方法中使用我在 init 中初始化的网格。任何输入将不胜感激。谢谢你。
【问题讨论】:
-
您班级的(私人)成员是
grid还是theGrid?你想用theGrid[r].push_back(theGrid[r][c]);做什么? -
它被称为
theGrid。我想我试图将坐标 (r,c) 处的 Cell 附加到嵌套向量中,回头看,该代码实际上没有意义,因为我已经假设 theGrid[r][c] 存在跨度>
标签: c++ vector segmentation-fault grid-layout