2009-10-20 81 views
0

我有一個基類聲明瞭一個虛函數,並且有一大組繼承自這個類的子類,其中一些子類可以覆蓋這個函數。現在我需要改變基本函數的行爲(使它不是虛擬的,並將可重寫的功能移到不同的地方),我想知道是否有一種快速的方法來找到覆蓋此函數的所有類(在編譯時或編譯時)。編譯器是VC++。快速找到覆蓋特定功能的所有子類的方法?

任何想法?

回答

0

我懷疑用適當的咒語,Doxygen可能會創建一個這樣的圖。

一個更簡單的方法可能是使該函數在基類中是私有的。這應該給每個嘗試覆蓋它的錯誤消息。它也會給每個嘗試使用它都帶來錯誤,但聽起來你可能需要識別這些地方。

+0

默認情況下Doxygen會這樣做(假設你已經設置它來記錄所有私人成員)。 – 2009-10-20 14:47:36

1

您可以更改基類的虛函數的返回類型。然後,由於倍率是不合法的編譯器應該產生的派生類的錯誤

0

如果你有機會到合適的殼(只改變返回值類型是不允許的。): 查找其中的子類中的所有文件位置應該很容易與「grep」。搜索所有這些文件並刪除函數可以用你最喜歡的編輯器和一個小的宏來完成,它搜索函數名並刪除聲明。刪除函數定義(如果不是內聯)應該是類似的。