2012-08-07 91 views
8

我的問題是關於如何評論與Doxygen模板類中的typedef。我舉一個例子來說明我的問題:typedef模板類與Doxygen(C++)

namespace fundamental 
    { 
    /** 
    * Basic function 
    */ 
    template <typename T> 
    class Base 
    { 
    public: 
     T x; ///< x coordinate 
     T y; ///< y coordinate 
    }; 
    typedef Base<float> Coordinate; ///< Point coordinate class 
    } 

使用Doxygen的處理上面的代碼後,我可以得到一個HTML頁面來顯示Base類的定義。但是,對於typedef類座標系,它不會出現在與Base相同的頁面中。實際上,所有的typedef類型都在基本命名空間頁面中列出,以及此命名空間中的所有類。我想知道是否可以在Base HTML頁面中顯示Coordinate類。通過這樣做,Base和Coordinate之間的鏈接將變得更加接近。謝謝!

回答

5

的類型定義是一個命名空間的一部分,所以你必須記錄下命名空間纔會出現,即:

/// documentation for the namespace 
namespace fundamental 
{ 
    ... 
    typedef Base<float> Coordinate; ///< Point coordinate class 
} 

另外,您可以使用@relates但這種狀況會成員下相關功能

/// @relates Base 
/// Point coordinate class 
typedef Base<float> Coordinate; 

可以將此標題更改爲實例相關成員:基類的通過使用doxygen -l創建佈局文件,然後編輯related元件的兩個出現在所生成的DoxygenLayout.xml如下:

<related title="Related Members"/> 
3

In the manual我閱讀以下內容:

讓我們重複一下,因爲它常常被忽略:記錄全局對象(函數,類型定義,枚舉,宏等等),你必須證明它們所定義的文件。換句話說,在這個文件中必須至少有一行

/*! \file *//** @file */行。

+0

我試過了,但它似乎不起作用。 – feelfree 2012-08-07 16:02:20

2

還有另請參閱(@sa)命令,可用於生成對其他實體的交叉引用。

1

您也可以使用/sa command手動在Base的頁面中放置參考。

namespace fundamental 
{ 
    /** 
    * Basic function 
    * /sa Coordinate 
    */ 
    template <typename T> 
    class Base 
    { 
    public: 
    T x; ///< x coordinate 
    T y; ///< y coordinate 
    }; 
    typedef Base<float> Coordinate; ///< Point coordinate class 
} 
0

其他的答案會的工作,但如果你的typedef是如此緊密地聯繫在一起,你想讓他們出現在同一Doxygen的頁面Base類,你可能要考慮定義一個新namespace(內Fundamental)這將只是包括Base和你typedef.然後,doxygen的會生成該namespace一個頁面,其中將包括Base和你typedef.

定義file文檔會做同樣的事情,但是這可能是一個更日誌您的代碼的合理佈局。

0

有此問題其他兩種解決方案。您可以使用@defgroup關鍵字定義組,並將類和typedef類型分組到一個模塊中。另一種解決方案是使用@relates