2009-08-26 5 views
10

最近、私は顧客からクラッシュダンプファイルを取得しました。私は間違ったデータを含む可能性のあるクラスに問題を追いかけることができましたが、実際のポインタではなく、クラスへのvoidポインタしかありませんでした(void-pointerはwindow-propertyから来ていました。 。 Visual Studio 2005は、単にポインタ値を示した場合、ウォッチウィンドウで「PTR」を使用して'anonymous namespaces'のデータをデバッグする(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. 

: は残念ながら、私はへのポインタをキャストしたかっするクラスは、このように、匿名の名前空間にありました。 "(MyClass *)ptr"を使用すると、デバッガはキャストできないと伝えます。

ptrをMyClassポインタにキャストするにはどうすればよいですか?

注:最終的には、匿名の名前空間(ソースファイルの名前など)を使用して「名前空間を使用」を使用することができますが、より良いソリューションが期待されます。

+1

Btw、VS 2008にも同じ問題があります。私は自分自身にメモを送ることをお勧めします。 – gimpf

答えて

8

これはMSDNに記載されています。ウォッチウィンドウ内に素晴らしいソリューションがあるようには見えません(私が推測するリストからあなたのクラスの装飾された名前を得ることができます)。

"匿名の名前空間"のアイデアはうまくいくはずですが、愚かな名前の同じクラスを宣言して、代わりにその型にキャストすることもできます。

関連する問題