So che questo è etichettato come risposta, ma sono stato in grado di riprodurre questo problema utilizzando gdb su OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
e la soluzione che funziona per me non ha risposto per me.
Si è scoperto che c'era un'altra domanda su SO che aveva una risposta che funzionava, quindi penso che valga la pena entrare in questa domanda:
Perché il casting di gdb non funziona?
La risposta breve è che potresti dover virgolette singole per le variabili con spazio dei nomi:
(gdb) p ('MyScope::MyClass'*) ptr;
Funziona per me:
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}
Per me funziona. Cosa stai usando (versione gcc, sistema operativo, flag di compilazione?)