2014-10-27 50 views
6

在C#中,如果我定義了一個結構,我也可以重寫ToString()。然後,當我在調試時添加一個監視或將鼠標懸停在結構的實例上時,工具提示將是計算的ToString()而不是結構的類型名稱。我可以在C++結構體上實現.ToString()以進行調試嗎?

我可以以某種方式在C++和/或C++/CLI中執行此操作嗎?也就是說,我可以將一個方法定義爲結構的一部分(或者做其他事情),這會導致watch-value/tooltip顯示我選擇的字符串嗎? Visual Studio for C/C++中的默認字符串渲染是所有結構的字段值(或可以塞進小盒子中)的列表。

我的類型都是C風格的結構。 (實際上,它是用C語言編寫之前,我轉換的.cpp文件,並修正了一些類型的問題,所以我可以在命令行中運行它。)下面是一個例子結構:

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方面可能不那麼重要。

+2

檢查了這看看它是否擺脫了任何光http://stackoverflow.com/questions/5171739/tostring-override-in-c – 2014-10-27 21:33:12

+0

請澄清,你的結構是簡單的非託管結構('結構foo')或託管結構體(「公共價值結構foo」或「公共價值類foo」)?也許向我們展示一個更簡單的結構? – 2014-10-27 21:37:19

+2

你試過NatVis嗎? http://msdn.microsoft.com/en-us/library/jj620914.aspx我知道它不是你所要求的,但它可能是你需要的 – 2014-10-27 21:59:29

回答

4

我認爲你想要做的是爲你的本地結構提供一個調試器可視化。我在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如何在調試器窗口中顯示結構。這裏有很多例子,上面的鏈接提供了一些很好的解釋,但我承認自己沒有嘗試過。

+0

這正是我所期待的。 – 2014-10-28 17:17:53

相關問題