Recientemente, recibí un archivo de volcado de un cliente. Podría rastrear el problema hasta una clase que podría contener datos incorrectos, pero solo obtuve un puntero a la clase, no un puntero real (el puntero void provenía de una propiedad de ventana, por lo tanto, era un puntero de vacío) . Por desgracia, la clase a la que me quería a emitir el puntero, se encontraba en un espacio de nombres en el anonimato, como esto:Depuración de datos en 'espacios de nombres anónimos' (C++)
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.
El uso de "PTR" de la ventana de inspección si Visual Studio 2005 demuestra el valor del puntero. Si utilizo "(MyClass *) ptr", el depurador me dice que no puede convertirlo.
¿Cómo puedo convertir el ptr a un puntero de MyClass?
Nota: Eventualmente podría usar un espacio de nombre con nombre tonto (como el nombre del archivo fuente), y luego usar un "uso de espacio de nombres", pero esperaría mejores soluciones.
Btw, VS 2008 presenta el mismo problema. Yo recomendaría enviar una nota a los mismísimos MS. – gimpf