访问结构中指针的属性

时间:2013-11-13 22:14:26

标签: c++ arrays object pointers properties

我首先在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>的

0 个答案:

没有答案