Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio 2010对局部变量的不稳定报告_C++_Visual Studio_Debugging - Fatal编程技术网

C++ Visual Studio 2010对局部变量的不稳定报告

C++ Visual Studio 2010对局部变量的不稳定报告,c++,visual-studio,debugging,C++,Visual Studio,Debugging,在我的一个名为MoveMethod的对象中,我有三个TileGridArea,这是我创建的一个数据结构,用于存储相对于特定原点的列-行对 TileGridArea的操作非常基本,在本项目的许多其他领域中都可以正常工作,但是当我在MoveMethod中通过指针引用它们时,这些更改并没有正确显示,因此它会破坏我试图完成的所有寻路工作 我在第25-27行初始化构造函数中的三个 并在第2行的previewPath上执行第一个操作编辑:似乎只允许2个显式链接(http://codepad.org/wXxB

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

TileGridArea的操作非常基本,在本项目的许多其他领域中都可以正常工作,但是当我在MoveMethod中通过指针引用它们时,这些更改并没有正确显示,因此它会破坏我试图完成的所有寻路工作

我在第25-27行初始化构造函数中的三个

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

它正确地读取previewPath为空,因此在第5行执行addMember函数。我在debug中已经详细介绍了它,没有理由不让它工作,但是当它从addMember函数返回到外部函数时,快速查看一下显示,无论出于何种任意原因,它决定不添加到previewPath,而是添加到可能的Destinations


这是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);
}
#包括
TileGridArea类
{
公众:
TileGridArea():已更改(false){}
void addMember(int,int){changed=true;}
布尔变了;
};
类移动方法
{
公众:
移动方法()
{
movePath=new TileGridArea();
previewPath=新的TileGridArea();
可能的目标=新的TileGridArea();
}
TileGridArea*移动路径;
TileGridArea*预览路径;
TileGridArea*可能的目标;
};
int main()
{
方法m;
m、 预览路径->添加成员(3,4);
断言(m.previewPath->changed);
断言(!m.possibleDestinations->changed);
}

很明显,它应该可以工作,但这对我没有多大帮助。我需要知道它为什么不起作用。那个代码示例对你来说仍然不起作用吗?如果哪怕一点点代码都不起作用,我会说你有一个填充版的VS2010——可能尝试重新安装VS2010。要知道这是你的代码还是VC 2010中的问题(有很多),只需将相关数据写入日志文件。简单的任务。