2011-10-06 182 views
1

我工作的一個C++代碼,這是我在Visual Studio 2010監視窗口:Visual Studio 2010觀察窗口?

http://oi54.tinypic.com/654sxu.jpg

我只需要明白是什麼意思時File_Service是[]以及如何訪問它在我的代碼中。 當我將它添加到觀察窗口時,Visual Studio像這樣添加它:{,,Simulator.exe}*(File_Service*){*}exe 任何幫助,將不勝感激。

回答

2

在這種情況下的方括號表示動態類型的變量exeFile_Service。也就是說,你的exe變量是我未知的類型,它指向File_Service類型的對象。假設exe的類型爲Executable,其中File_Service繼承自此[File_Service]下的變量,您將在File_Service中找到已定義的變量。

將方括號中的表達式添加爲要觀察的成員時,基本上指示調試器將exe轉換爲File_Service。在這種情況下,這很好,但是如果exe會指向另一種Executable,那麼表情怪異的表情不會顯示任何東西(例如,您不能向下傾倒Executable對象,例如File_Service)。

+0

謝謝你的幫助Eran。如果是這樣的話,爲什麼我不能使用這個訪問File_Service變量:((File_Service *)exe) - > 以及如何解釋這個:{,, Simulator.exe} *(File_Service *){*} exe爲什麼不只是(File_Service *)exe? – Mike

+0

這不是微不足道的原因是調試器不是一個編譯器 - 它沒有關於數據類型的所有信息。我想當需要某些類型的信息時,你必須指定模塊(在這種情況下是Simulator.exe)。我無法找到任何正式的文檔,但在「在調試器中投射」下查看[this](http://m.c-plusplus.de/50940)。底線,我想這只是一個技術限制,你必須做... ... – eran