Doxygen 为基 class 函数生成一个关于派生 class 中不存在的函数的奇怪错误
Doxygen generates a strange error for base class function about nonexisting function in the derived class
代码如下:
namespace Test {
/// Base class
class Base
{
public:
/// Method foo
/// @param a ParamA
/// @param b ParamB
virtual void foo(char a, int b);
/// Method foo
/// @param a ParamA
/// @param b ParamB
/// @param c ParamC
virtual void foo(char a, int b, char c);
/// Method foo
/// @param m ParamM
template<typename T>
void foo(std::vector<T> m)
{
}
};
/// Derrived class
class Derrived : public Base
{
public:
using Base::foo;
/// Method foo
/// @param a ParamA
/// @param b ParamB
void foo(char a, int b) override;
};
}
如果此代码将使用 Doxygen 进行处理。我们得到了奇怪的错误:
error: argument 'm' of command @param is not found in the argument list of Test::Derrived::foo(typename T) (warning treated as error, aborting now)
如果注释行 using Base::foo;
Doxygen 正确处理了这个文件。
看起来像是 Doxygen 中的错误,但有人知道解决方法吗?
- 在 doxygen 1.9.1(含)之前的 doxygen 版本中,我能够重现该问题。
- 1.9.2 及更高版本问题已解决。
当前doxygen版本为1.9.4 (5d15657a55555e6181a7830a5c723af75e7577e2)
这个问题的解决方法是更新你的doxygen版本到当前的doxygen版本。
代码如下:
namespace Test {
/// Base class
class Base
{
public:
/// Method foo
/// @param a ParamA
/// @param b ParamB
virtual void foo(char a, int b);
/// Method foo
/// @param a ParamA
/// @param b ParamB
/// @param c ParamC
virtual void foo(char a, int b, char c);
/// Method foo
/// @param m ParamM
template<typename T>
void foo(std::vector<T> m)
{
}
};
/// Derrived class
class Derrived : public Base
{
public:
using Base::foo;
/// Method foo
/// @param a ParamA
/// @param b ParamB
void foo(char a, int b) override;
};
}
如果此代码将使用 Doxygen 进行处理。我们得到了奇怪的错误:
error: argument 'm' of command @param is not found in the argument list of Test::Derrived::foo(typename T) (warning treated as error, aborting now)
如果注释行 using Base::foo;
Doxygen 正确处理了这个文件。
看起来像是 Doxygen 中的错误,但有人知道解决方法吗?
- 在 doxygen 1.9.1(含)之前的 doxygen 版本中,我能够重现该问题。
- 1.9.2 及更高版本问题已解决。
当前doxygen版本为1.9.4 (5d15657a55555e6181a7830a5c723af75e7577e2)
这个问题的解决方法是更新你的doxygen版本到当前的doxygen版本。