2011-10-24 35 views
0

在我的一個名爲MoveMethod的對象中,我有三個TileGridAreas,這是一個用於存儲與特定原點相關的列 - 行對的數據結構。Visual Studio 2010對本地變量的報告不一致

TileGridAreas在它們的操作中是相當基本的,並且它們在該項目的許多其他區域中運行良好,但是當我在MoveMethod中通過指針引用它們時,所做的更改顯示不正確,我試圖完成的所有尋路工作。

我在構造函數的第25-27行here中初始化了三個元素。

在第2行專門就previewPath執行第一次操作在這裏編輯:只允許它似乎2個顯式鏈接(http://codepad.org/wXxBL7nb)

它正確地讀取previewPath是空的,因爲這樣會在第5行執行addMember函數。我已經在調試中介紹了它,並且完全沒有理由不工作,但是當它從addMember函數返回到外部函數時,快速查看locals window表明無論出於任何原因,它都決定不添加previewPath,而添加到possibleDestinations中。

這是視覺工作室還是我的代碼問題?當我所依賴的關於涉及變量的準確信息的來源是錯誤的時候,我發現調試對象的功能部分是很荒唐的。

+0

這是一個優化的構建? –

+1

要確定它是代碼中還是VC 2010中的問題(有很多),只需將有問題的數據寫入日誌文件即可。簡單的任務。 –

回答

0

適合我。我將代碼縮減爲最小的可運行版本 - 你應該在將來自己做這個。

#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); 
} 
+0

很明顯,它應該工作,但這並沒有多大幫助。我需要知道爲什麼它不起作用。 –

+0

該代碼示例是否仍然不適合您?如果即使那些代碼不起作用,我也會說你擁有VS2010的填充版本 - 可能會嘗試重新安裝VS2010。 – Ayjay

相關問題