1

私は2つのクラスを持っています:

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 に答える