Doxygen C++ - 不在模板类中记录虚函数

10

我有一个模板类,其中包含一些纯虚函数和已实现的虚函数。然后我有子类继承这个类。我想记录虚拟父类中的函数并使子类在Doxygen中继承此文档。

例如(我不能发布真实的源代码)。

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个回答

6

那么,我将回答自己的问题。有点。

如果有人遇到同样的问题,请务必检查注释错误。Doxygen可以正确处理我的模板,但是我确实遇到了问题,因为我习惯于在程序中放置/* code /**/,以便在调试时快速取消大块的代码注释。Doxygen不喜欢这个!

我收到了以下错误消息:

文件在注释块中间结束!可能缺少\endcode?

由于我有几个未记录的文件,所以花了一段时间来浏览生成的警告。通过在我的配置文件中使用

EXTRACT_ALL = YES

这里有一个与我类似的人遇到了相似的问题。


5
根据INHERIT_DOCS标签,如果设置为“yes”,它应该已经执行此操作。
据我所知,doxygen在解析模板类方面存在一些问题,这可能是您的文档未被复制的原因(即doxygen认为Child继承自不同的Parent类)。
您可以尝试使用\copydoc命令来强制执行此行为。如果仍然无法正常工作,则可能需要要求修补程序或自行修复。

谢谢。你知道怎么样至少让它记录模板的父类吗?我似乎无法让它识别父类中的文档。 - user3002273
看起来你已经解决了。当一些先前的标签/解析操作出错时,Doxygen的解析会出现问题。 - Marco A.

1
我曾遇到过一个类似的问题,无法生成抽象类文档。解决方法是将方法设置为public(在C++类中默认情况下所有方法都是私有的,您需要在Doxygen配置文件中将EXTRACT_PRIVATE设置为YES以生成文档)。
希望这能对某些人有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接