2009-08-26 50 views
10

最近,我收到了客戶的崩潰轉儲文件。我可以將問題追蹤到一個可能包含不正確數據的類,但我只有一個void類指針,而不是一個真正的指針(void-pointer來自window-property,因此它是一個void-pointer) 。 不幸的是,類我想投的指針,在一個匿名的命名空間,就像這樣:在'匿名命名空間'中調試數據(C++)

namespace 
    { 
    class MyClass 
     { 
     ... 
     }; 
    } 

... 
void *ptr = ... 
// I know ptr points to an instance of MyClass, 
// and at this location I want to cast ptr to (MyClass *) in the debugger. 

在監視窗口中使用「PTR」如果Visual Studio 2005中只是顯示的指針值。 如果我使用「(MyClass *)ptr」,調試器告訴我它不能投射到它。

如何將ptr轉換爲MyClass指針?

注意:我最終可能會使用一個愚蠢命名的命名空間(如源文件的名稱),然後使用「using namespace」,但我希望有更好的解決方案。

+1

順便說一句,VS 2008展現出同樣的問題。我建議給MS自己發一張紙條。 – gimpf 2009-08-26 14:57:38

回答

8

這在MSDN中提及。它看起來並不像監視窗口中的一個很好的解決方案(你可以從列表中獲得你的類的裝飾名稱,我猜)。

你的「愚蠢命名的命名空間」的想法會工作正常,你也可以聲明一個愚蠢的名字相同的類,並轉換爲該類型。