Hi all,
I just started using BGL and created the following program
(MSVS 7.1), storing some data in an interior property and then retrieving them:
#include
"boost/graph/adjacency_list.hpp"
struct
NodeProperties { int a,
b, c; };
typedef
boost::adjacency_list<
boost::listS,boost::listS,boost::undirectedS,
boost::property<boost::vertex_all_t,NodeProperties>
> Graph;
typedef
boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor;
typedef
boost::property_map<Graph,boost::vertex_all_t>::type AllMap;
int
main(int argc, char const *argv[])
{
Graph graph;
AllMap allMap =
get(boost::vertex_all,graph);
VertexDescriptor vd =
boost::add_vertex(graph);
NodeProperties np;
np.a = 1; np.b = 2;
np.c = 3;
allMap[vd] = np;
NodeProperties np1 =
allMap[vd];
//
const AllMap::value_type &vt = boost::get(allMap,vd);
//
NodeProperties np1 = vt.m_value;
return 0;
}
For which I get the following error:
c:\Documents and
Settings\ygat\Desktop\Work\InternalProperty\InternalProperty.cpp(24): error
C2440: 'initializing' : cannot convert from
'boost::detail::vertex_property_map<Graph,PropertyTag>::Property' to
'NodeProperties'
with
[
Graph=Graph,
PropertyTag=boost::vertex_all_t
]
After some poking around, I discovered that if I replace the
offending line with the two commented lines, things work. Is this the right way
to retrieve the data? Why can the NodeProperties object be
on the rhs but not on the lhs of an assignment to the property map?
Thanks,
Yoram