在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方面可能不那麼重要。
檢查了這看看它是否擺脫了任何光http://stackoverflow.com/questions/5171739/tostring-override-in-c – 2014-10-27 21:33:12
請澄清,你的結構是簡單的非託管結構('結構foo')或託管結構體(「公共價值結構foo」或「公共價值類foo」)?也許向我們展示一個更簡單的結構? – 2014-10-27 21:37:19
你試過NatVis嗎? http://msdn.microsoft.com/en-us/library/jj620914.aspx我知道它不是你所要求的,但它可能是你需要的 – 2014-10-27 21:59:29