Hello,
I’m trying to build a DAG thanks to BGL, the source code builds fine but crashes at runtime. And I’m a bit lost on the reason. I don’t even know if my typedefs are correct according to my purpose: simply building a DAG whose nodes are « Classes » with arcs that point to « parents ».
I’ve written the following:
#include <list>
#include
class MyClass {};
typedef MyClass* Vertex;
typedef std::pair Edge;
typedef boost::directed_graph ClassInheritanceGraph;
static ClassInheritanceGraph g_parentClassGraph;
void buildGraph(void)
{
std::list<Edge> edges;
edges.push_back(std::make_pair(new MyClass, new MyClass));
edges.push_back(std::make_pair(new MyClass, new MyClass));
std::list<Edge>::iterator edgesIt;
for (edgesIt = edges.begin(); edgesIt != edges.end(); edgesIt++)
{
Vertex child = edgesIt->first;
Vertex parent = edgesIt->second;
boost::add_edge(child, parent, g_parentClassGraph);
}
}
int main()
{
buildGraph();
return 0;
}
The program crashes on boost::add_edge() with a segfault. The point is I don’t know if I’m correctly using BGL. I don’t really know what is the proper way (I don’t understand everything from the BGL documentation…). I tried to debug the program but with all those template arguments I don’t understand the error (http://pastebin.com/BRgz3uL7 in case you want to make nightmares :) ).
Thus in case someone understands what’s wrong here I would be really grateful for some help!
Thanks,
Lucas