Visual Studio 2010中不稳定的局部变量报告



在我的一个名为MoveMethod的对象中,我有三个TileGridAreas,这是我创建的用于存储相对于特定原点的列行对的数据结构。

TileGridAreas在他们的操作中是相当基本的,他们在这个项目的许多其他领域的功能很好,但是当我在MoveMethod内通过指针引用它们时,这些变化不会正确出现,因此它会把我想要完成的所有寻路工作都搞得很乱。

我在第25-27行构造函数中初始化了3。

并执行第一个操作,特别是在第2行的previewPath编辑:只允许2显式链接,它似乎(http://codepad.org/wXxBL7nb)

它正确地读取previewPath为空,因此在第5行执行addMember函数。我已经在调试中完成了它,并且完全没有理由不工作,但是当它从addMember函数返回到外部函数时,快速查看locals窗口显示,无论出于何种任意原因,它决定不添加到previewPath,而是添加到可能的目的地。

这是一个问题与visual studio或与我的代码?当我所依赖的有关所涉及变量的准确信息的源完全错误时,我发现调试对象的功能部分是非常困难的。

对我来说很好。我把代码缩减到最小的可运行版本——以后你应该自己这样做。

#include <assert.h>
class TileGridArea
{
public:
    TileGridArea() : changed (false) {}
    void addMember(int,int) {changed = true;}
    bool changed;
};
class MoveMethod
{
public:
    MoveMethod()
    {
        movePath = new TileGridArea();
        previewPath = new TileGridArea();
        possibleDestinations = new TileGridArea();
    }
    TileGridArea* movePath;
    TileGridArea* previewPath;
    TileGridArea* possibleDestinations;
};
int main()
{
    MoveMethod m;
    m.previewPath->addMember(3,4);
    assert(m.previewPath->changed);
    assert(!m.possibleDestinations->changed);
}

最新更新