2

我有一个头文件,其中包含:

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 无法解析模板化返回类型- 表明 Doxygen 不处理最新的 C++ 更改。哪个版本的 C++ 开始支持 boost 函数对象返回类型?谁能指出我用于提升函数对象返回类型的 Doxygen 的其他示例?

4

2 回答 2

2

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

typedef boost::function<int(void *, char *)> myfunc_t;
myfunc_t getFnPtr();
于 2012-06-01T18:18:05.657 回答
1

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

我将在下一个版本 (>1.8.1) 中更正此问题,同时您可以按照 nm 的建议使用 typedef 的解决方法。相关的错误报告是https://bugzilla.gnome.org/show_bug.cgi?编号=677315

于 2012-06-02T09:19:28.210 回答