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

Ove*_*urg 7 c c++ c++-cli visual-studio visual-c++

在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;
}
Run Code Online (Sandbox Code Playgroud)

我对C++/CLI的经验很少 - 我的大多数经验都是使用原生C/C++和C#.我正在使用Visual Studio 2013.

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

Dav*_*Yaw 5

我想你想要做的是为你的原生结构提供一个调试器可视化.我在MSDN上做了一些搜索,找到了这个页面:在调试器中创建本机对象的自定义视图.

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