Sé que esto está etiquetado como respondido, pero pude reproducir este problema usando gdb en OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
y la solución funciona para mí no me respondió.
Resulta que había otra pregunta sobre SO que tenía una respuesta que funcionó, así que creo que vale la pena entrar en esta pregunta:
¿Por qué la conversión de gdb no funciona?
La respuesta corta es que es posible que deba poner entre comillas simples sus variables de espacio de nombres:
(gdb) p ('MyScope::MyClass'*) ptr;
Funciona para mí:
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}
Esto funciona para mi. ¿Qué estás usando (versión gcc, sistema operativo, banderas de compilación?)