Eri*_* H. 15 c++ boost doxygen shared-ptr
我已经做了足够的谷歌搜索知道,如果我有类似的东西
class SubObject {
public:
//blah blah blah
};
class Aggregate {
public:
boost::shared_ptr<SubObject> m_ptr;
};
Run Code Online (Sandbox Code Playgroud)
如果我有一个虚拟声明,我可以让Doxygen创建"正确"的协作图
namespace boost { template<class T> class shared_ptr { T *dummy; }; }
Run Code Online (Sandbox Code Playgroud)
在我的头文件中.
我的问题是:如何在我的所有项目和所有标题中使用它,而不必在每个文件中实际包含该行?
Eri*_* H. 12
嘿......我回答自己的问题感到愚蠢,但是在发布之后我几乎把它弄好了:
放下代码片段
namespace boost { template<class T> class shared_ptr { T *dummy; }; }
Run Code Online (Sandbox Code Playgroud)
在头文件中,称为"doxygen_dummy.h",并确保它包含在项目的工作空间或目录中.你不需要在任何地方实际#include它(事实上,你不想,以避免违反一个定义规则).您只需要Doxygen在扫描所有文件时能够看到它.
谢谢Eric,这很有效.但是我不喜欢扩展我的协作图的额外虚拟类,所以更多地在这上面酿造.此Doxyfile设置将所有boost :: smart_ptr代码更改为T*.这会绕过smart_ptr并创建指向协作图中类型的直接链接.
INPUT_FILTER = "sed 's/boost::shared_ptr<\(.*\)>/\1*/'"
Run Code Online (Sandbox Code Playgroud)
这可能不是你想要的最终文档,因为它确实隐藏了对smart_ptr的所有引用作为普通指针,但协作图变得更加可读.