2010-03-25 53 views
0

可能爲重載操作符獲取調用者圖形嗎?重載操作符在Visual Studio 2005中的調用者圖形

我有一個簡單的結構與自然順序,我已經通過重載關係運算符來表示。回顧代碼,看起來我在定義operator >時犯了一個錯誤。我已經設置大於僅僅返回operator <的否定(這是不正確的,因爲這將意味着當val1 == val2(val1 > val2) == true)。

無論如何,在解決這個問題之前,我想檢查代碼的其餘部分調用>運算符的位置,以確保沒有意外的後果。這似乎不可能使用Visual Studio 2005呼叫瀏覽器。當我搜索這個函數時,它會識別它在代碼中被定義的位置,但是列出那裏沒有對該函數的調用,而不是這種情況。

除了在我的項目代碼中搜索「>」的所有實例,我還有其他選擇嗎?

此頁 - http://msdn.microsoft.com/en-us/magazine/cc163658.aspx#S3 - 表示檢測操作符調用不是最初在VS2005中,但我不知道這是否發生了變化。

回答

2
  1. 除非其類的VAL1和val2是自己實現operator>有基類的情況下,我建議你從頁眉和cpp文件刪除您的operator>定義和重新編譯。這應該給你一個編譯器保證的所有operator>調用的列表。

  2. Boost.Operators可能有助於避免將來出現此類錯誤。如果您提供operator==,它可以自動提供operator!=,例如,如果您提供operator<,則,operator>operator>=也相同。

  3. 這是非常難找到,由於模板的所有調用代碼重載運營商和預編譯:C++ IDE for Linux with smart reference searching

+1

回答得好,它不僅提供對特定問題的解決方案(找到所有實例),但是就如何避免首先解決這個問題的次要問題給出了建議,並最終鏈接到了關於該主題的一些背景信息。 使用這些模板,它看起來像是一種語言超越工具的例子,並且最終將貫穿始終。另一方面,預編譯器... – 2010-03-26 11:06:38

+0

在''頭文件中,存在關係運算符的模板運算符(請參閱http://www.cplusplus.com/reference/std/utility/rel_ops/),它們與2)提升運營商。 – 2010-04-20 11:27:40