为什么Doxygen将此方法报告为属性?

时间:2012-06-01 16:48:20

标签: c++ documentation doxygen

我有一个包含以下内容的头文件:

class ClassName {
...

////////////////////////////////////////////////////////////////////////////////////////////////////
/// \fn boost::function<int(void *, char *)> ClassName::getFnPtr();
///
/// \brief ...
///
/// \author ...
/// \date ...
///
/// \return A boost function object ...
////////////////////////////////////////////////////////////////////////////////////////////////////

boost::function<int(void *, char *)> getFnPtr();

...
};

运行Doxygen时,在“公共属性”下报告getFnPtr()而不是“公共成员函数”。谁能帮助我让Doxygen把它放在正确的位置?

我是Doxygen的新手,但熟悉Javadoc。我正在使用Doxygen GUI 1.8.1。

编辑:我认为Doxygen对涉及boost函数对象的模板化返回类型感到窒息。这篇文章 - Doxygen fails to parse templated return type - 表明Doxygen没有处理最新的C ++更改。什么版本的C ++开始支持boost函数对象返回类型?有人能指出我用于提升函数对象返回类型的其他Doxygen示例吗?

2 个答案:

答案 0 :(得分:2)

尝试使用typedef。这些方面的东西:

typedef boost::function<int(void *, char *)> myfunc_t;
myfunc_t getFnPtr();

答案 1 :(得分:1)

问题是doxygen有一些简单的启发式方法来区分函数指针的函数和变量。返回类型的模板参数是在这种情况下触发错误决策的原因。

我将在下一个版本(&gt; 1.8.1)中更正此问题,与此同时,您可以使用n.m建议的typedef的变通方法。相关错误报告为https://bugzilla.gnome.org/show_bug.cgi?id=677315