【问题标题】:How to use Doxygen's "Documentation at other places" feature with a specialized template class?如何将 Doxygen 的“其他地方的文档”功能与专门的模板类一起使用?
【发布时间】:2011-08-01 22:07:44
【问题描述】:

我正面临着一个非常不重​​要的 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 */

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


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

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

【问题讨论】:

    标签: c++ templates doxygen


    【解决方案1】:

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

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

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

    【讨论】:

    • 它没有;我一开始就这样定义它,因为我认为它应该像其他类一样工作。我刚刚做了一些测试,即使使用简单的模板类(不是专门的)也无法正常工作。
    • 它终于可以与简单的模板类一起工作了(我忘记了命名空间到 Doxygen 类标签中),但仍然不适用于专门的通过。
    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 2019-05-13
    • 1970-01-01
    • 2018-05-22
    • 2013-04-09
    • 1970-01-01
    相关资源
    最近更新 更多