Recentemente, ho ricevuto un file di dettagli arresto anomalo da un cliente. Ho potuto rintracciare il problema in una classe che poteva contenere dati non corretti, ma ho solo ottenuto un puntatore void alla classe, non un vero puntatore (il puntatore void proveniva da una proprietà window, quindi era un puntatore void) . Purtroppo, la classe a cui ho voluto lanciare il puntatore, era in uno spazio dei nomi anonima, in questo modo:Debug dei dati in "namespace anonimi" (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.
Utilizzando "PTR" nella finestra di controllo se Visual Studio 2005 dimostra il valore del puntatore. Se uso "(MyClass *) ptr", il debugger mi dice che non può eseguire il casting su di esso.
Come posso trasmettere il ptr a un puntatore MyClass?
Nota: potrei infine utilizzare uno spazio dei nomi con lo stesso nome (come il nome del file di origine), quindi utilizzare un "namespace", ma mi aspetterei soluzioni migliori.
Btw, VS 2008 presenta lo stesso problema. Consiglierei di mandare a loro volta la MS. – gimpf