我正在使用doxygen(xubuntu 12.04机器上的1.8.0版本)记录遗留的c ++ / fortran混合代码。除了使用stl std :: vector类之外,我的dot_graphs,调用图和调用图都正常工作。
我有一些类foo需要包含另一个类bar的向量。
class foo
{
//What i'd like to do (1)
std::vector<bar> d_bars
//What works (2)
bar* d_bars
};
class bar
{
SOME_FUNCTION();
}
bar类包含各种函数,例如“SOME_FUNCTION()”。当foo类中的函数调用SOME_FUNCTION:d_bars[i].SOME_FUNCTION();
时,仅当以第二种方式声明d_bars时才会生成调用者图。这不适用于当前代码,需要在使用stl向量类在第一个方法中声明时才能工作。
我已经BUILTIN_STL_SUPPORT = YES
了。我知道我的代码在上面并不完美。我希望你能抓住漂移。我的代码非常庞大,所以我试着简化它。
答案 0 :(得分:1)
您应该启用BUILTIN_STL_SUPPORT
选项。
答案 1 :(得分:1)
我不知道这会有什么帮助,但无论如何,谁知道。
我遇到了与你完全相同的问题:我有两个类,其中一个有另一个类的向量。更糟糕的是,我正在生成shared_pointers,后来创建了它的向量。
我唯一能解决的问题就是使用sed ..是的,真的...例如:
class A
{
public:
A() {};
~A() {};
DoSomeThingA(){
AA_ = 0;
};
private:
int AA_;
};
class B
{
public:
B() {};
~B(){};
DoSomeThingB(){
for (size_t i = 0; i < VecA_.size(); i++)
{
VecA_[i]->DoSomeThingA();
}
};
private:
std::vector<std::shared_ptr<A>> VecA_;
};
我使用sed(sed -e 's/VecA_\[i\]-^>/VecA_\./; s/std::vector^<std::shared_ptr^<A^>^>/A/'
)更改了它(我使用&#34; ^&#34;因为我在Windows上,这是适用于&#34;&gt;&#34的转义字符;),获得:
class A
{
public:
A() {};
~A() {};
DoSomeThingA(){
AA_ = 0;
};
private:
int AA_;
};
class B
{
public:
B() {};
~B(){};
DoSomeThingB(){
for (size_t i = 0; i < VecA_.size(); i++)
{
VecA_.DoSomeThingA();
}
};
private:
A VecA_;
};
最后,我配置了doxygen:
INPUT_FILTER = sed -e 's/VecA_\[i\]-^>/VecA_\./; s/std::vector^<std::shared_ptr^<A^>^>/A/'
FILTER_SOURCE_FILES =是
SOURCE_BROWSER =是
VERBATIM_HEADERS = no
乏味?是的,当然......但它对我有用,这是我能做到这一点的唯一方法!
希望有所帮助