typedef в классе шаблонов с Doxygen (c++)

мой вопрос связан с тем, как прокомментировать typedef в классе шаблонов с Doxygen. Приведу пример, иллюстрирующий мой вопрос:--2-->

 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 для обработки вышеуказанных кодов я могу получить HTML-страницу, чтобы показать определение базы классов. Однако для координаты класса typedef она не будет отображаться на одной странице с базой. Фактически все типы typedef перечислены на странице фундаментальное пространство имен вместе со всеми классами в этом пространстве имен. Я было интересно, можно ли показать класс координат на базовой HTML-странице. Таким образом, связь между базой и координатой станет намного ближе. Спасибо!

6 ответов


typedef является частью пространства имен, поэтому вы должны документировать пространство имен для его появления, т. е.:

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

в качестве альтернативы вы можете использовать @relates но это поставит члена под Соответствующие Функции базового класса:

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

вы можете изменить это название, например Членами путем создания файла макета с помощью doxygen -l а затем редактирование двух вхождений related элемент созданный DoxygenLayout.xml следующим образом:

<related title="Related Members"/>

в руководстве Я прочитал следующее:

давайте повторим это, потому что это часто упускается из виду: чтобы документировать глобальные объекты (функции, typedefs, перечисление, макросы и т. д.), Вы должны документировать файл, в котором они определены. Другими словами, должен быть хотя бы

/*! \file */ или a /** @file */ строки в этом файле.


есть см. также ( @sa) команда, полезная для создания перекрестных ссылок на другие объекты.


вы также можете использовать /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
}

другие ответы будут работать, но если ваш typedef так тесно связан с Base класс, который вы хотите, чтобы они появились на той же странице Doxygen, вы можете рассмотреть вопрос об определении нового namespace (между Fundamental), который будет просто включать Base и свой typedef. затем doxygen создаст страницу для этого namespace что будет входить Base и свой typedef.

определение file документация будет делать то же самое, но это может быть более логичным верстка код.


есть два варианта решения этой проблемы. Вы можете определить группы с помощью ключевого слова @defgroup и сгруппировать класс и тип typedef в один модуль. Другое решение использует @relates