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::propertyboost::vertex_all_t,NodeProperties
Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor;
typedef boost::property_map::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::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