Doxygen报告“潜在的递归类关系”

时间:2011-03-02 04:43:07

标签: c++ doxygen

我有一个C ++模板化的类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(相同)。

编辑:看起来错误实际上是在另一个使用由具有冲突名称的XML标记生成的XML标记的Doxyfile中抛出,因此问题与此有关。无论如何,我只是将基类改名为其他东西,一切都很好。

1 个答案:

答案 0 :(得分:1)

Doxygen具有检查A类和B类是否具有继承关系的函数 (直接或间接),这是递归的。该函数检查递归的极限深度为256.

可能doxygen与你的代码混淆了(因为名字巧合)并且认为A类依赖于B而B再次依赖于A.

它可能是一个Doxygen错误,但最好的方法是重命名该类。