Я занимался созданием игры на с ++ только для практики программирования. Я создал класс, который по сути является двумерным вектором клеток, которые функционируют как различные тайлы подземелья. Когда я пытаюсь вызвать мою функцию для превращения краевых ячеек в стены, я получаю сегмент-ошибку 11. Из того, что я исследовал, ошибка заключается в попытке доступа к элементу за пределами моего вектора, или у меня закончилась куча памяти но я не уверен, если какой-либо из них имеет место здесь.
int main(){
floor myfloor(18,9);
myfloor.setwalls();
}
#ifndef FLOOR_H
#define FLOOR_H
#include "cell.h"
#include <vector>
using namespace std;
class floor{
public:
floor(int xmax, int ymax);
void setwalls();
private:
int sizeX;
int sizeY;
vector< vector<cell*> > layout;
};
#endif
floor::floor(int xmax, int ymax){
sizeX = xmax;
sizeY = ymax;
layout.resize(xmax, vector<cell*>(ymax));
for(int i = 0; i < xmax; i++){
for(int j = 0; j < ymax; j++){
layout[i][j] = new cell();
}
}
}
void floor::setwalls(){
for(int i = 0; i < sizeY; i++){
layout[0][i]->setwall();
layout[sizeX][i]->setwall();
}
for(int i = 0; i < sizeX; i++){
layout[i][0]->setwall();
layout[i][sizeY]->setwall();
}
}
Что вызывает здесь segfault 11? Проведенное мною тестирование говорит о том, что моя программа переходит в setwalls (), но, похоже, у нее возникает ошибка по умолчанию, как только она пытается получить доступ к первому элементу вектора макета.