如何使用Doxygen更改派生类中的函数描述?

时间:2012-04-16 09:35:18

标签: c++ doxygen

我有两个班级:

class A {
public:
  /** Brief description
   * Grand description
   */
  virtual void func() {
    // Do something.
  }
};

class B: public A {
  // How to re-describe func() here?
};

我在Doxygen配置中打开了描述继承,这很好。但是我希望将派生类中的描述更改为某些函数,在基类中实现,不用重新实现这些函数。

当然,我可以做到以下几点:

class B: public A {
public:
  /** My new description.
   * ...
   */
  virtual void func() {
    A::func();
  }
};

但对我来说这似乎是“丑陋的” - 编写不必要的代码只是为了添加一些评论。

还有其他解决方案吗?

2 个答案:

答案 0 :(得分:2)

如果你真的想要,你也可以使用预处理技巧:

class B: public A {
  public:

#ifdef ONLY_FOR_DOXYGEN
    /** Beautiful docs */
    virtual void func();
#endif
};

以及这些设置:

ENABLE_PREPROCESSING   = YES
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = ONLY_FOR_DOXYGEN

这样只有doxygen才会看到额外的代码。

答案 1 :(得分:1)

这可能不是您想听到的,但似乎doxygen无法为不在代码中的实体创建文档,并且相同功能应该具有相同文档的想法似乎是明智的。

我能想到的最好的方法是在A文档中添加一个部分来实现:

/** Brief
 * \par For Class A
 *  Class A details...
 * \par For Class B
 *  Class B details...
 */

这应该为两者提供相同的文档,读者可以选择相关部分吗?

这意味着他们仍然必须有相同的简要描述。