これが回答済みとしてラベル付けされていることは知っていますが、OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
で gdb を使用してこの問題を再現できました そして、私にとってはうまくいく解決策は私にとっては答えませんでした.
SO に関する別の質問があったことが判明しましたが、それには有効な回答がありました。そのため、この質問に取り組む価値があると思います:
gdb キャストが機能しないのはなぜですか?
簡単な答えは、名前空間変数を単一引用符で囲む必要がある場合があるということです:
(gdb) p ('MyScope::MyClass'*) ptr;
私のために働く:
g++ -g test.cpp -o test
gdb test
(gdb) break main
(gdb) r
Breakpoint 1, main () at test.cpp:22
22 A::B *p = new A::B(100);
(gdb) n
24 p->print();
(gdb) n
m_a is 100
26 int *q = 0;
(gdb) p p
$1 = (A::B *) 0x602010
(gdb) p (A::B *) 0x602010
$2 = (A::B *) 0x602010
(gdb) p *((A::B *) 0x602010)
$3 = {m_a = 100}
わたしにはできる。何を使用していますか (gcc バージョン、OS、コンパイル フラグ?)