如何使用Doxygen的“其他地方的文档”功能与专门的模板类?

时间:2011-04-09 01:45:56

标签: c++ templates doxygen

我正面临Doxygen的一个非常不重​​要的问题。但由于我无法通过互联网找到答案而我非常好奇,所以我来这里请你分享你的知识。

当我在一个类上工作时,我习惯在标准位置定义文档的小部分,但我还习惯在头文件的底部定义大文档部分,如代码示例或逐字,而不是定义它们在每个班级之上。 那些我需要使用Doxygen的“其他地方的文档”功能。

这是一个有效的例子:

/** This is my class description */
class MyClass
    {
    ...
};


/*! @class MyClass
@code
    ...some code example
@endcode */

这通常效果很好。

但今天我正在尝试使用与专门的模板类相同的方法,而且我无法将其放在文档中的正确位置。

这是一个非工作的例子:

/** This is my class description */
template < class Tr, class... Args >
class MyClass<Tr(Args...)> : public MyBaseClass {
    ...
};


/*! @class MyClass<Tr(Args...)>
@code
    ...some code example
@endcode */

我搜索了文档,Doxyfile和Internet,但我仍然无法判断我是否应该这样做,或者这是一个“错误”或非通常情况。

感谢您的启发。


编辑:我使用最简单的模板类(没有专门化)进行了一些测试,但这也没有用。

/** This is my class description */
template < class Tr >
class MyClass
{
    ...
};


/*! @class MyClass // @class MyClass< Tr > // @class template < Tr > MyClass
@code
    ...some code example
@endcode */

我尝试在类名之前或之前指定模板,使用或不使用“template”关键字,并仅使用类名,但它似乎没有任何作用。


编辑2:它适用于简单的模板类。之前的编辑测试无效,因为我已将类定义为命名空间而未在Doxygen注释中指定命名空间:@class namespace :: MyClass

但它仍然不适用于专门的模板类,我仍然无法将注释块重定向到专门的模板类。

1 个答案:

答案 0 :(得分:0)

我认为你不应该把模板参数放在那里。做那样的事情:

/** This is my class description */
template < class Tr, class... Args >
class MyClass<Tr(Args...)> : public MyBaseClass {
    ...
};

/*! @class MyClass
@code 
    ...some code example
@endcode */

我不确定它是否有效(这里没有安装doxygen),但我认为应该这样做。