簡體   English   中英

Visual Studio 2010不穩定報告局部變量

[英]Erratic reporting of local variables by Visual Studio 2010

在我的一個名為MoveMethod的對象中,我有三個TileGridAreas,這是我創建的一種數據結構,用於存儲相對於特定起點的列行對。

TileGridAreas在它們的操作中是相當基本的,它們在該項目的許多其他區域中都可以正常工作,但是當我在MoveMethod中通過指針引用它們時,更改不會正確顯示,因此,這使所有尋路工作變得困難我正在努力完成。

我在這里的 25-27行中在構造函數中初始化了三個。

並在此處的第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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM