1

我有两节课:

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();
  }
};

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

还有其他解决方案吗?

4

2 回答 2

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 才能看到额外的代码。

于 2012-04-17T18:00:58.143 回答
1

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

我能想到的最好的方法是在您的A文档中放置一个部分,以达到以下效果:

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

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

这意味着它们仍然必须具有相同的简短描述。

于 2012-04-16T11:49:25.827 回答