Debugowanie danych w „anonimowych przestrzeniach nazw” (C ++)
Ostatnio dostałem plik zrzutu awaryjnego od klienta. Mogłem śledzić problem do klasy, która może zawierać niepoprawne dane, ale dostałem tylko wskaźnik void do klasy, a nie prawdziwy wskaźnik (wskaźnik void-pochodził z właściwości window, dlatego był to wskaźnik pustki) . Niestety klasa, do której chciałem rzucić wskaźnik, była w anonimowej przestrzeni nazw:
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.
Używanie „ptr” w oknie zegarka, jeśli Visual Studio 2005 pokazuje tylko wartość wskaźnika. Jeśli używam „(MyClass *) ptr”, debuger mówi mi, że nie może na niego rzucić.
Jak mogę rzucić ptr na wskaźnik MyClass?
Uwaga: W końcu mógłbym użyć głupiej nazwanej przestrzeni nazw (jak nazwa pliku źródłowego), a następnie użyć „używając przestrzeni nazw”, ale oczekiwałbym lepszych rozwiązań.