Мне нужно реализовать маленькую и простую игру на с ++ (лабиринт), и у меня сейчас есть некоторые проблемы.
Некоторые фрагменты: у меня есть массив указателей на объекты, которые представляют мои поля влабиринт
Field*** maze;
инициация лабиринта:
for (n = 0; n < MAZE_WIDTH; n++) {
this->maze[n] = new Field*[MAZE_HEIGHT];
for (p = 0; p < MAZE_HEIGHT; p++) {
this->maze[n][p] = new Field();
this->maze[n][p]->x = n;
this->maze[n][p]->y = p;
}
}
При создании лабиринта мне нужен список уже посещенных полей и стек, поэтому я сделал:
std::vector<Field*> visited;
std::vector<Field*> stack;
Затем я хочу поместить Поле * в мой стек
stack.push_back(neighbour);
Но после этого нажатия все значения в объекте неверны.Даже если я попытаюсь
neighbour = stack.back();
, все значения будут совершенно разными
Я уже прочитал некоторые темы на эту тему, и поэтому я выбрал вектор указателей, а не объектов.
Где моя вина?
Редактировать: Запрошено еще несколько фрагментов:
Конечно, я выделяю память для самого помощника
this->maze = new Field**[MAZE_WIDTH];
Поле - простой класскоторый выглядит как:
class Field {
public:
Field();
~Field();
bool w_left;
bool w_right;
bool w_front;
bool w_back;
unsigned int x;
unsigned int y;
private:
};