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

2024-05-04

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

我可以在 C++ 和/或 C++/CLI 中以某种方式做到这一点吗?也就是说,我可以定义一个方法作为结构的一部分(或执行其他任何操作),这将导致监视值/工具提示显示我选择的字符串吗? 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 方面可能不太重要。


我认为您想要做的是为您的本机结构提供调试器可视化。我在 MSDN 上做了一些搜索,找到了这个页面:在调试器中创建本机对象的自定义视图 http://msdn.microsoft.com/en-us/library/jj620914.aspx.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐