9

私の質問は、Doxygenを使用してテンプレートクラスのtypedefにコメントする方法に関連しています。私の質問を説明するための例を示します。

 namespace fundamental
  {
    /**
    * Basic function
    */
    template <typename T>
    class Base
    {
    public:
      T x; ///< x coordinate
      T y; ///< y coordinate
    };
    typedef Base<float> Coordinate; ///< Point coordinate class
  }

Doxygenを使用して上記のコードを処理した後、クラスBaseの定義を示すHTMLページを取得できます。ただし、typedefクラスCoordinateの場合、Baseと同じページには表示されません。実際、すべてのtypedefタイプは、この名前空間のすべてのクラスとともに、基本的な名前空間ページに一覧表示されます。BaseHTMLページにCoordinateクラスを表示できるかどうか疑問に思いました。そうすることで、BaseとCoordinateの間のリンクがより緊密になります。ありがとう!

4

6 に答える 6

5

typedefは名前空間の一部であるため、表示するには名前空間を文書化する必要があります。

/// documentation for the namespace
namespace fundamental
{
   ...
   typedef Base<float> Coordinate; ///< Point coordinate class
}

または、を使用することもできます@relatesが、これにより、メンバーは基本クラスの関連関数の下に配置されます。

/// @relates Base
/// Point coordinate class
typedef Base<float> Coordinate;

次のように生成された要素の2つのオカレンスを使用してレイアウトファイルを作成し、編集することで、このタイトルをたとえば関連メンバーに変更できます。doxygen -lrelatedDoxygenLayout.xml

<related title="Related Members"/>
于 2012-08-07T20:49:39.777 に答える
3

マニュアルで私は以下を読みました:

繰り返しになりますが、見過ごされがちです。グローバルオブジェクト(関数、typedef、列挙型、マクロなど)を文書化するには、それらが定義されているファイルを文書化する必要があります。言い換えれば、少なくとも

/*! \file */または /** @file */このファイルの行。

于 2012-08-07T15:43:01.327 に答える
2

他のエンティティへの相互参照を生成するのに役立つSeeAlso (@sa )コマンドがあります。

于 2012-08-07T15:46:51.123 に答える
1

/saこのコマンドを使用して、のページに参​​照を手動で配置することもできBaseます。

namespace fundamental
{
  /**
  * Basic function
  * /sa Coordinate
  */
  template <typename T>
  class Base
  {
  public:
    T x; ///< x coordinate
    T y; ///< y coordinate
  };
  typedef Base<float> Coordinate; ///< Point coordinate class
}
于 2012-08-07T15:47:30.620 に答える
0

他の回答も機能しますtypedefが、クラスと密接に関連しているためBase、同じDoxygenページに表示したい場合は、を含む新しいnamespace(内Fundamental)を定義することを検討Baseしてください。typedef.その後、doxygenが生成されます。そのためのページにnamespaceBasetypedef.

ドキュメントを定義fileしても同じことができますが、これはコードのより論理的なレイアウトになる可能性があります。

于 2012-08-07T15:50:59.537 に答える
0

この問題には他に2つの解決策があります。@defgroupキーワードを使用してグループを定義し、クラスとtypedefタイプを1つのモジュールにグループ化できます。他の解決策は@relatesを使用することです

于 2012-08-08T13:22:25.980 に答える