Vím, že je to označeno jako zodpovězené, ale dokázal jsem tento problém reprodukovat pomocí gdb na OS X (GNU gdb 6.3.50-20050815 (Apple version gdb-1820) (Sat Jun 16 02:40:11 UTC 2012))
a řešení works-for-me mi na to neodpovědělo.
Ukázalo se, že na SO byla další otázka, která měla odpověď, která fungovala, takže si myslím, že stojí za to zapojit se do této otázky:
Proč gdb casting nefunguje?
Krátká odpověď je, že možná budete muset své proměnné s jmenným prostorem uvozovat:
(gdb) p ('MyScope::MyClass'*) ptr;
Funguje pro 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}
Pro mě to funguje. Co používáte (verze gcc, OS, příznaky kompilace?)
Jak odstranit X bajtů z konce velkého souboru bez přečtení celého souboru?
Jak dosáhnu toho, aby cURL nezobrazoval indikátor průběhu?