Tengo una clase de plantilla C++ base::Foo<class T>
, y tengo en otro archivo una clase base::bar::Foo : public base::Foo<Baz>
. Doxygen parece no gustar, ya que genera un errorInforme de Doxygen "relación de clase recursiva potencial"
<unknown>:1: Detected potential recursive class relation between class snLib::mocTwod::DsaCell and base class DsaCell< snLib::mocTwod::ProblemTraits, detLib::cellDiffusionTwod::ProblemTraits >!
¿Hay una manera de evitar que esto ocurra? La documentación de Doxygen no habla sobre este error ni nada sobre "posibles relaciones de clase recursivas".
La clase "base":
/*! \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
uno de sus descendientes que está causando el problema:
/*! \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
fichero de configuración
Mi Doxygen tiene muchas opciones de configuración, incluyendo la configuración de ruta: STRIP_FROM_PATH
(establecer en el directorio raíz), STRIP_FROM_INC_PATH
(mismo), INCLUDE_PATH
(mismo).
Editar: parece que el error se arrojó en otro archivo Doxy que usó las etiquetas XML generadas por el nombre conflictivo, por lo que el problema estaba relacionado con eso. De todos modos, acabo de cambiar el nombre de la clase base a otra cosa y todo estaba bien de nuevo.
Informar de un error, pero los nombres realmente anidados pueden entrar en conflicto para acomodar el desarrollo asincrónico por diferentes equipos. Reutilizar el mismo nombre a propósito aún se desaconseja, incluso si el idioma lo permite. –
Debe publicar su código exacto, en lugar de una versión sintetizada de él. ¿Calificas completamente la clase base? –
@Ben: Gracias por la sugerencia; Tal vez cambie el nombre de la clase base. –