最近,我从客户那里得到了一个故障转储文件。我可以将问题追溯到可能包含不正确数据的类,但我只有一个指向该类的空指针,而不是真正的指针(空指针来自窗口属性,因此它是空指针) . 不幸的是,我想将指针转换到的类位于匿名命名空间中,如下所示:
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.
当我在监 window 口中使用 ptr
时,Visual Studio 2005 只显示指针值。
如果我使用 (MyClass *)ptr
,调试器会告诉我它不能强制转换。
如何将 ptr
转换为 MyClass
指针?
注意:我最终可以使用一个愚蠢的命名空间(如源文件的名称),然后使用“使用命名空间”,但我希望有更好的解决方案。
最佳答案
这在 MSDN 中有所提及.在 Watch 窗口中似乎没有一个很好的解决方案(我猜你可以从列表中获取你的类的修饰名称)。
您的“愚蠢命名空间”的想法可以正常工作,您也可以只声明一个具有愚蠢名称的相同类,然后转换为该类型。
关于c++ - 调试 'anonymous namespaces' (C++) 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1334989/