Depurando dados em 'namespaces anônimos' (C ++)
Recentemente, recebi um arquivo de despejo de memória de um cliente. Eu poderia rastrear o problema até uma classe que poderia conter dados incorretos, mas eu só tenho um ponteiro void para a classe, não um ponteiro real (ponteiro void veio de uma propriedade de janela, portanto, era um ponteiro void) . Infelizmente, a classe para a qual eu queria converter o ponteiro estava em um namespace anônimo, assim:
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.
Usando "ptr" na janela watch, se o Visual Studio 2005 mostrar apenas o valor do ponteiro. Se eu usar "(MyClass *) ptr", o depurador me diz que não pode converter para ele.
Como posso converter o ptr para um ponteiro MyClass?
Nota: Eu poderia, eventualmente, usar um namespace bobo-nomeado (como o nome do arquivo de origem) e, em seguida, usar um "usando namespace", mas seria de esperar melhores soluções.