c++ - 调试 'anonymous namespaces' (C++) 中的数据

标签 c++ namespaces debugging

最近,我从客户那里得到了一个故障转储文件。我可以将问题追溯到可能包含不正确数据的类,但我只有一个指向该类的空指针,而不是真正的指针(空指针来自窗口属性,因此它是空指针) . 不幸的是,我想将指针转换到的类位于匿名命名空间中,如下所示:

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/

相关文章:

C++:double 与 unsigned int。为什么它会这样运行?

c++ - 将整数数组转换为字符串

javascript - 简单地访问其他命名空间的成员

c - 如何解释 linux 内核陷阱错误行?

javascript - 为什么有些值可以通过 OR 运算符,而其他值则不能?

JavaScript 无法读取现有对象的值?

c++ - 为什么我的 <bool> 类型的 vector 只存储 1?

c++ - 为什么在使用字符串文字初始化后无法将字符分配给字符数组?

php - Doxygen:@var 使用命名空间

c++定义不同命名空间的枚举