gpt4 book ai didi

c++ - Doxygen 报告 "potential recursive class relation"

转载 作者:IT老高 更新时间:2023-10-28 22:22:39 27 4
gpt4 key购买 nike

我有一个 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 (相同)。

编辑:看起来错误实际上是在另一个 Doxyfile 中引发的,该 Doxyfile 使用了名称冲突的文件生成的 XML 标签,因此问题与此有关。无论如何,我只是将基类重命名为其他东西,一切都很好。

最佳答案

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

可能 doxygen 与您的代码混淆(因为名称巧合)并认为 A 类依赖于 B 而 B 又依赖于 A。

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

关于c++ - Doxygen 报告 "potential recursive class relation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com