2014-11-05 74 views
5

我有一個模板類,有一堆純虛擬和實現的虛擬功能。然後我有孩子從這個班繼承。我想記錄虛擬父類中的函數,並讓孩子在Doxygen中繼承這個文檔。Doxygen C++ - 不記錄模板類中的虛函數

例如(我不能發佈真實的來源)。

template <typename A> 
class Parent { 
    /** Documentation 
    */ 
    virtual void pure() = 0; 

    /** More Docs 
    */ 
    virtual void notpure() { 
     ... 
    } 
}; 

在所有適當的包括(至少對於編譯器)

class Child: public Parent<int> { 
    void pure() { 
     ... 
    } 
}; 

我想然後Doxygen的生成這兩個類對於每個功能,除非我重新相同的文檔文件不同的文件記錄重寫的函數。

我運行Ubuntu 14.04並使用存儲庫Doxygen 1.8.6以防萬一。

謝謝

回答

3

所以,我會回答我自己的問題。有點。

如果有人有這個相同的問題,一定要檢查評論錯誤。 Doxygen很好地處理了我的模板,但是我遇到了一個問題,因爲我習慣在程序中放入/ * code/** /,以便在調試時快速取消註釋大塊代碼。 Doxygen不喜歡這個!

我有錯誤訊息

文件中註釋塊的中間結束!也許缺少\ endcode?

我花了一段時間來瀏覽生成的警告,因爲我有幾個未公開的文件。這是通過使用

EXTRACT_ALL照顧= YES

在我的配置文件。 HERE是與我有類似問題的人。

3

按照INHERIT_DOCS標籤,它應該已經做到這一點,如果你把它設置爲「」。

AFAIK doxygen在解析模板類時遇到了一些問題,這可能是您的文檔沒有被複制的原因(即doxygen認爲Child繼承自不同的Parent類)。

您可能會嘗試通過使用\copydoc命令強制執行此操作。如果這仍然不起作用,您可能不得不要求補丁或自行修復。

+0

謝謝。你知道如何使它至少記錄模板Parent嗎?我似乎無法讓它識別父文件。 – 2014-11-06 15:14:09

+0

看來你已經解決了。當一些以前的標籤/解析操作出錯時,Doxygen解析錯誤 – 2014-11-06 16:15:09

1

我有一個類似的問題,生成一個抽象類的文檔。解決方案是使這些方法公開(默認情況下,在C++類中,所有方法都是私有的,並且您需要在Doxygen配置文件中將EXTRACT_PRIVATE設置爲YES以生成文檔)。

我希望這可以幫助別人!