我可以在C ++结构上实现.ToString()以进行调试吗?

时间:2014-10-27 21:29:44

标签: c++ c visual-studio visual-c++ c++-cli

在C#中,如果我定义了一个struct,我也可以覆盖ToString()。然后,当我调试并添加监视或将鼠标悬停在结构的实例上时,工具提示将是计算出的ToString()而不是结构的类型名称。

我能以某种方式在C ++和/或C ++ / CLI中这样做吗?也就是说,我可以将方法定义为结构的一部分(或做其他任何事情),这将导致watch-value / tooltip显示我选择的字符串? Visual Studio for C / C ++中的默认字符串呈现是所有结构域字段值的列表(或者可以卡在小框中的数量)。

我输入所有C风格的结构。 (在我将文件转换为.cpp并修复了一些类型问题之前,它实际上是用C编写的,所以我可以在CLI中运行它。)这是一个示例结构:

struct other_dollars_node
{
    struct other_dollars_node *next_other_dollars;
    override *overrides;    
    long     other_dollars_id;
    tm       effective_date;
    double   amount;
}

我对C ++ / CLI的经验很少 - 我的大部分经验都是使用本机C / C ++和C#。我使用的是Visual Studio 2013。

更新:由于几乎所有现有代码都使用本机C语法,而我更喜欢无需重构的解决方案,因此CLI方面可能不太重要。

1 个答案:

答案 0 :(得分:5)

我认为您要做的是为您的原生结构提供调试器可视化。我在MSDN上进行了一些搜索,找到了这个页面:Create custom views of native objects in the debugger

基本上,您需要做的是将文件添加到C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers以告诉Visual Studio如何在调试器窗口中显示结构。那里有很多例子,上面的链接提供了一些很好的解释,但我承认我自己没有尝试过。