首先,我在 2 个文件(.h 和 .cpp 文件)中有 2 个类,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->state = State::visited;设置的。