我首先在2个文件中有2个类(.h和.cpp文件), Create.h 和 AI.h 。
Create.h中有这个结构:
public:
struct Cell
{
int row;
int column;
vector<Cell*> neighbors;
State state;
};
这是枚举类State(存储在Create.h文件中):
enum class State : char
{
visited,
empty
};
在AI.h中,我有一个堆栈和一个这样的Create对象:
private:
deque<Create::Cell*> path;
Create obj;
在AI.cpp中有一个名为 obj 的实例,它包含一个Cell的2D数组,其中每个Cell都有相应的行,列,状态和邻居。
构造
AI::AI(Create createObj)
: obj(createObj)
{
start = &obj.array[1][1];
}
我还有一个这样的函数,它以start
作为参数开头:
void AI::Function(Create::Cell* cell)
{
path.push_back(cell);
cell->state = State::visited;
while (expression)
{
cell = path.back();
cell->state = State::visited;
for (int i = 0; i < cell->neighbors.size(); i++)
{
if (cell->neighbors[i]->state == State::empty)
{
path.push_back(cell->neighbors[i]);
}
}
}
}
所以基本上路径堆栈中的单元格首先指向obj.array [1] [1]并正确设置它(我已经确认它实际上指向了我想要它的位置)但是当我从中检索一个单元格时堆栈它没有指向obj.array。
我要做的是设置每个单元的邻居的状态,但我设法在路径堆栈上设置状态,在单元格本身上但不在内部的数组上obj实例。
我绝对可以做到并且它的工作原理是在这样的单元格下设置obj.array [i] [j]:
cell = path.back();
cell->state = State::visited;
obj.array[cell->row][cell->column].state = State::visited;
我想知道的是,是否有一种方法(通过我推测的指针)使obj.array Cell元素知道它是由 cell-&gt; state = State :: visited; <设置的/ em>的