|
Boost Users : |
From: James Sutherland (James.Sutherland_at_[hidden])
Date: 2008-05-05 16:24:46
I cannot get calls to write_graphviz to work when using anything other
than vecS for the vertex and edge descriptors. I get the following
error:
graphviz.hpp:255: error: no matching function for call to
get
(boost
::bgl_named_params
<boost::bundle_property_map<boost::adjacency_list<boost::listS,
boost::vecS, boost::directedS, VertInfo, boost::no_property,
boost::no_property, boost::listS>, size_t, VertInfo, int>,
boost::vertex_index_t, boost::no_property>&, const long unsigned int&)
I am using bundled properties for the vertex properties, as shown below.
Any ideas as to why the setS and listS containers do not work with
write_graphvis?
James
---------------------------------
struct VertInfo {
string name;
int index;
};
template<typename GraphT>
struct VertWriter{
typedef typename graph_traits<GraphT>::vertex_descriptor Vertex;
VertWriter( GraphT& _g ) : g(_g) {}
void operator()( ostream& os, const Vertex& v ) const{
os << "[label=\"" << g[v].name << "\"]";
}
private:
GraphT& g;
};
int main()
{
// typedef adjacency_list< vecS, vecS, directedS, VertInfo >
Graph; // works.
typedef adjacency_list< listS, listS, directedS, VertInfo >
Graph; // doesn't work.
Graph G;
// populate the graph with vertex info set on each vertex...
VertWriter<Graph> vw(G);
boost::default_writer dw;
write_graphviz( cout, G, vw, dw, dw );
}
-----------------------------------
NOTE: I have also tried
write_graphviz( cout, G, vw, dw, dw,
vertex_index_map( boost::get(&VertInfo::index,G) ) );
which gives the same compiler error.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net