У меня есть шаблонный класс С++ base::Foo<class T>
, а в другом файле есть класс base::bar::Foo : public base::Foo<Baz>
. Doxygen, похоже, это не нравится, так как выдает ошибку
<unknown>:1: Detected potential recursive class relation between class snLib::mocTwod::DsaCell and base class DsaCell< snLib::mocTwod::ProblemTraits, detLib::cellDiffusionTwod::ProblemTraits >!
Есть ли способ предотвратить это? В документации Doxygen не говорится об этой ошибке или о «потенциальных рекурсивных отношениях классов».
«Базовый» класс:
/*! \file snlib/DsaCell.hpp
*/
#ifndef snlib_DsaCell_hpp
#define snlib_DsaCell_hpp
#include "Dsa.hpp"
namespace snLib {
/*!
* \brief Implementation of naive cell-centered DSA
*/
template <class HoTraits_T, class LoTraits_T>
class DsaCell : public snLib::Dsa< HoTraits_T, LoTraits_T >
{
[snip]
};
}
#endif
один из его потомков, который вызывает проблему:
/*! \file snlib/twod/moc/DsaCell.hpp
*/
#ifndef snlib_twod_moc_DsaCell_hpp
#define snlib_twod_moc_DsaCell_hpp
#include "snlib/DsaCell.hpp"
#include "ProblemTraits.hpp"
#include "detlib/twod/celldiffusion/ProblemTraits.hpp"
namespace snLib { namespace mocTwod {
/*!
* \brief Inconsistent DSA for MOC
*/
class DsaCell : public snLib::DsaCell<
snLib::mocTwod::ProblemTraits,
detLib::cellDiffusionTwod::ProblemTraits
>
{
[snip]
};
} } // end namespace snLib::mocTwod
#endif
В моем конфигурационном файле Doxygen установлено много параметров, включая конфигурацию пути: STRIP_FROM_PATH
(установлен в корневой каталог), STRIP_FROM_INC_PATH
(то же самое), INCLUDE_PATH
(то же самое).
Редактировать: похоже, что ошибка была фактически выдана в другом Doxyfile, который использовал теги XML, сгенерированные файлом с конфликтующим именем, поэтому проблема была связана с этим. Во всяком случае, я просто переименовал базовый класс во что-то другое, и все снова было хорошо.
boost
, которые совпадают сstd
. OTOH, убедитесь, что ваши имена классов точны, например. соблюдая правило «является» для классов: убедитесь, чтоsnLib::mocTwod::DsaCell
являетсяsnLib::DsaCell
. - person John McFarlane   schedule 07.07.2019