|
Boost Users : |
From: Shufei Fan (fansf_at_[hidden])
Date: 2007-02-27 11:30:01
I defined an double array inside bundled vertex property, and have trouble finding ways of accessing it.
Neither can I find any where in the document an example on it. Your input will be much appreciated!
my graph is defined as follows:
struct Node{ // this is hard to access double mode[3];
};
struct Edge{
//no problem access them double nPixels; unsigned short nTh;};
typedef boost::adjacency_list< boost::vecS, boost::vecS, boost::bidirectionalS, Node, Edge> Graph;
//Graph object colGraph
Graph colGraph;
I have no problem with accessing the 'nPixels' in Edge property,
boost::property_map<Graph, double Edge::*>::type ew = get(&Edge::nPixels, *colGraph);//edge weight
But I am in a great deal of trouble finding ways of accessing 'mode' in Node property.
//compiler error here
boost::property_map<Graph, double Node::*>::type nm = get(&Node::mode, *colGraph);//node modeerror message is :
//----------------------------------------------------
c:\...\xxx.cpp(236) : error C2440: 'initializing' : cannot convert from 'boost::property_map<Graph,Property>::type' to 'boost::bundle_property_map<Graph,Descriptor,Bundle,T>' with [ Graph=boost::adjacency_list<boost::vecS,boost::vecS,boost::bidirectionalS,Node,Edge>, Property=double (Node::* )[3] ] and [ Graph=Graph, Descriptor=boost::property_map<Graph,double Node::* >::descriptor, Bundle=Node, T=double ] No constructor could take the source type, or constructor overload resolution was ambiguous//----------------------------------------------------
neither the following works(I added '[3]' in the parameter list): boost::property_map<Graph, double Node::*[3]>::type nm = get(&Node::mode, *colGraph);//node mode
This time errors are raised in the 'property.hpp' file, they are:
//----------------------------------------------------
c:\Boost\include\boost-1_33_1\boost\pending\property.hpp(40) : error C2825: 'PropertyTag::kind': cannot form a qualified name c:\Boost\include\boost-1_33_1\boost\graph\properties.hpp(198) : see reference to class template instantiation 'boost::property_kind<PropertyTag>' being compiled with [ PropertyTag=double Node::* [3] ] c:\shufei\VCProjects\edison\segm\GA.cpp(236) : see reference to class template instantiation 'boost::property_map<Graph,Property>' being compiled with [ Graph=Graph, Property=double Node::* [3] ]c:\Boost\include\boost-1_33_1\boost\pending\property.hpp(40) : error C2039: 'kind' : is not a member of 'operator``global namespace'''c:\Boost\include\boost-1_33_1\boost\pending\property.hpp(40) : error C2146: syntax error : missing ';' before identifier 'type'c:\Boost\include\boost-1_33_1\boost\pending\property.hpp(40) : error C2955: 'boost::type' : use of class template requires template argument list c:\Boost\include\boost-1_33_1\boost\type.hpp(14) : see declaration of 'boost::type'c:\Boost\include\boost-1_33_1\boost\pending\property.hpp(40) : fatal error C1903: unable to recover from previous error(s); stopping compilation//----------------------------------------------------thanks,
_________________________________________________________________
Connect to the next generation of MSN Messenger
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline
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