Что, если какое-либо различие имеют два альтернативных способа введения типа из другого пространства имен в код, созданный в примере ниже? Только 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.)
Я думаю, что этот вопрос похож на Разница между псевдонимом типа и объявлением использования .