Отладка данных в "анонимных пространствах имен" (С++)
Недавно я получил файл дампа аварийной ситуации у клиента. Я мог бы отследить проблему до класса, который мог бы содержать неправильные данные, но я получил только указатель void для класса, а не реальный указатель (указатель void появился из свойства window, поэтому он был указателем пустоты),
К сожалению, класс, к которому я хотел добавить указатель, был в анонимном пространстве имен, например:
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.
Использование "ptr" в окне просмотра, если Visual Studio 2005 просто показывает значение указателя.
Если я использую "(MyClass *) ptr", отладчик говорит мне, что он не может использовать его.
Как я могу передать ptr в указатель MyClass?
Примечание. В конечном итоге я мог бы использовать пространство имен с глупыми именами (например, имя исходного файла), а затем использовать "использование пространства имен", но я ожидал бы лучших решений.
Ответы
Ответ 1
Это упоминается в MSDN. Не похоже, что в окне просмотра есть приятное решение (вы можете получить украшенное имя вашего класса из списка, которое я предполагаю).
Идея вашего "глупого имени пространства имен" будет работать нормально, вы также можете просто объявить идентичный класс с глупым именем и применить к этому типу.