doxygen не ассоциирует «использование объявления» в разных пространствах имен, но распознает «объявление псевдонима (typedef)» - PullRequest
0 голосов
/ 16 марта 2020

Что, если какое-либо различие имеют два альтернативных способа введения типа из другого пространства имен в код, созданный в примере ниже? Только typedef (объявление псевдонима), по-видимому, работает для doxygen для распознавания функций из разных пространств имен:

В примере кода с using nsInterface::iOtherContainer; и using nsInterface::iOtherItr; вывод doxgen НЕ выполняется как:

Publi c Функции-члены:
void Переопределение DoSomething (iOtherContainer)
void Переопределение DoSomethingElse (iOtherItr itr)
Publi c Функции-члены, унаследованные от nsInterface :: iExample:
виртуальная пустота DoSomething (iOtherContainer cont) = 0
виртуальная пустота DoSomethingElse (iOtherItr itr) = 0

/// \file cExample.h
#include<vector>

/// nsInterface summary documentation for doxygen here
namespace nsInterface {
/// iOther documentation for doxygen here
class iOther
{
public:
  virtual void Action() = 0;
};
typedef std::vector<iOther*>      iOtherContainer;
typedef iOtherContainer::iterator iOtherItr;

/// iExample documentation for doxygen here
class iExample
{
public:
  virtual void DoSomething(iOtherContainer cont) = 0;
  virtual void DoSomethingElse(iOtherItr itr)    = 0;
};
} //namespace nsInterface

/// nsExample summary documentation for doxygen here
namespace nsExample {
using nsInterface::iExample;
using nsInterface::iOtherContainer; //DOXYGEN DOES NOT ASSOCIATE FUNCTIONS
using nsInterface::iOtherItr; //DOXYGEN DOES NOT ASSOCIATE FUNCTIONS
//using iOtherContainer = nsInterface::iOtherContainer; //WORKING OK 
//using iOtherItr = nsInterface::iOtherItr; //WORKING OK
/// cExample documentation for doxygen here
class cExample : public iExample
{
  //iExample
public:
  void DoSomething(iOtherContainer cont) override { ; }
  void DoSomethingElse(iOtherItr itr) override { ; }
};
} //namespace nsExample

Я ожидал (хотел), чтобы Doxygen распознал, что функции на самом деле реализуются. Поэтому я должен изменить объявление using на объявление псевдонима (typedef) using iOtherContainer = nsInterface::iOtherContainer и using iOtherItr = nsInterface::iOtherItr, чтобы doxygen correclty идентифицировал функцию is , переопределяющую интерфейсную функцию:

Publi c Функции-члены:
void Переопределение DoSomething (iOtherContainer) (реализует nsInterface :: iExample.)
void Переопределение DoSomethingElse (iOtherItr itr) (реализует nsInterface :: iExample.)

Я думаю, что этот вопрос похож на Разница между псевдонимом типа и объявлением использования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...