对每个带指针的循环使用a

时间:2013-11-12 18:40:50

标签: visual-c++ pointers vector struct foreach

我首先在2个文件中有2个类(.h和.cpp文件), Create.h AI.h

Create.h中有这个结构:

public:
    struct Cell
        {
            //some stuff
            vector<Cell*> neighbors;
            State state;
        };

这是枚举类State(存储在Create.h文件中):

enum class State : char
{
    //some states like "empty"
};

现在在AI.cpp中,我有一个这样的函数:

void AI::Function(Create::Cell cell)
{
        for each (Create::Cell* var in cell.neighbors)
        {
            if (var->state == State::empty)
            {

            }
        }
}

所以基本上我试图访问存储在cell.neighbors中的每个单独的单元格,每个单元格都有一个,所以我可以为它们中的每一个做一些事情。

根据我的调试器,虽然它甚至没有到达 if(var-&gt; state == State :: empty)部分。我是否每次使用错误?

编辑:邻居矢量中有明确的元素

neighbors vector

2 个答案:

答案 0 :(得分:1)

如果您在启用优化的情况下进行编译,那么可能会完全删除这样的空if语句(它没有副作用)。

(虽然,我认为调试器不允许你在该行上设置断点,如果它被删除。所以这是一个简单的测试 - 尝试在if本身设置一个断点。)

答案 1 :(得分:0)

似乎向量是空的。您可以在循环之前检查此打印的大小。 我想回答一些意见。这种形式的for循环是MS VC ++语言扩展。它不是C ++ / CLI。