如何将 Doxygen 的 "Documentation at other places" 功能与专门的模板类一起使用?

How to use Doxygen's "Documentation at other places" feature with a specialized template class?

本文关键字:一起 功能 Doxygen Documentation at places other      更新时间:2023-10-16

我正面临一个非常不重要的氧气问题。但是由于我在网上找不到答案,而且我很好奇,我来这里是想请你分享你的知识。

当我在处理一个类时,我习惯在文档的标准位置定义小部分,但我也习惯在头文件的底部逐字定义像代码示例这样的大文档部分,而不是在每个类的顶部定义它们。那些我需要使用氧的"文档在其他地方"的功能。

下面是一个工作示例:

/** 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和互联网,但我仍然无法判断我是否不这样做,因为它应该这样做,或者如果这是一个"错误"或不寻常的情况。

谢谢您的教诲。


编辑:我用最简单的模板类(没有专门化)做了更多的测试,这也不起作用。

/** 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

但是它仍然不能与专门化模板类一起工作,并且我仍然无法将注释组重定向到专门化模板类。

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

/** This is my class description */
template < class Tr, class... Args >
class MyClass<Tr(Args...)> : public MyBaseClass {
    ...
};
/*! @class MyClass
@code 
    ...some code example
@endcode */

我不确定它是否工作(这里没有安装氧气),但我认为它应该。