[英]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.