Error compiling adjacency_matrix.

Hello everyone, I'm learning how to use adjacency_matrix to create dense graphs for my image processing PFC, and I've spent a couple of days stuck with the following compilation error. **** Build of configuration Debug for project BGL_proves **** make all Building file: ../src/BGL_proves.cpp Invoking: GCC C++ Compiler g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/BGL_proves.d" -MT"src/BGL_proves.d" -o"src/BGL_proves.o" "../src/BGL_proves.cpp" In file included from /usr/include/c++/4.3/ext/hash_set:64, from /usr/local/include/boost/graph/adjacency_list.hpp:22, from ../src/BGL_proves.cpp:12: /usr/include/c++/4.3/backward/backward_warning.h:33:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. ../src/BGL_proves.cpp: In function ‘int main()’: ../src/BGL_proves.cpp:54: error: no matching function for call to ‘boost::adjacency_matrix<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t, float, boost::no_property>, boost::no_property, std::allocator<bool> >::adjacency_matrix(main()::Edge [21], main()::Edge*, int&, double [21])’ /usr/local/include/boost/graph/adjacency_matrix.hpp:599: note: candidates are: boost::adjacency_matrix<Directed, VertexProperty, EdgeProperty, GraphProperty, Allocator>::adjacency_matrix(typename std::vector<typename boost::mpl::if_<typename boost::has_property<typename boost::detail::retag_property_list<boost::edge_bundle_t, EdgeProperty>::type>::type, std::pair<bool, typename boost::detail::retag_property_list<boost::edge_bundle_t, EdgeProperty>::type>, char>::type, typename Allocator::rebind<typename boost::mpl::if_<typename boost::has_property<typename boost::detail::retag_property_list<boost::edge_bundle_t, EdgeProperty>::type>::type, std::pair<bool, typename boost::detail::retag_property_list<boost::edge_bundle_t, EdgeProperty>::type>, char>::type>::other>::size_type) [with Directed = boost::undirectedS, VertexProperty = boost::no_property, EdgeProperty = boost::property<boost::edge_weight_t, float, boost::no_property>, GraphProperty = boost::no_property, Allocator = std::allocator<bool>] /usr/local/include/boost/graph/adjacency_matrix.hpp:472: note: boost::adjacency_matrix<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t, float, boost::no_property>, boost::no_property, std::allocator<bool>
::adjacency_matrix(const boost::adjacency_matrix<boost::undirectedS, boost::no_property, boost::property<boost::edge_weight_t, float, boost::no_property>, boost::no_property, std::allocator<bool> >&) ../src/BGL_proves.cpp:23: warning: unused variable ‘noms’ make: *** [src/BGL_proves.o] Error 1
The code that leaves this error is the following: #include <iostream> #include <boost/config.hpp> #include <boost/graph/adjacency_matrix.hpp> #include <boost/graph/adjacency_list.hpp> #include <boost/graph/graph_utility.hpp> #include <boost/graph/graph_traits.hpp> using namespace std; using namespace boost; int main() { //Crear vertexs i enllaços amb estructures fàcils d'utilitzar. enum imatges_e {A,B,C,D,E,F,G,N}; const char* noms = "ABCDEFG"; typedef std::pair<int, int> Edge; //Entrem enllaços. Edge edge_array[] = { Edge(A,B), Edge(A,C), Edge(A,D), Edge(A,E), Edge(A,F), Edge(A,G), Edge(B,C), Edge(B,D), Edge(B,E), Edge(B,F), Edge(B,G), Edge(C,D), Edge(C,E), Edge(C,F), Edge(C,G), Edge(D,E), Edge(D,F), Edge(D,G), Edge(E,F), Edge(E,G), Edge(F,G) }; //Entrem pesos dels enllaços. double weights[] = { 3.87317, 16.6444, 16.6504, 16.5974, 16.556, 16.542, 16.5325, 16.5393, 16.4867, 16.4469, 16.4323, 2.44883, 3.34502, 3.82632, 4.12945, 2.73509, 3.46093, 3.75471, 2.65915, 2.99527, 2.31493 }; int num_edges = sizeof(edge_array) / sizeof(Edge); typedef adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, float> > ALUGraph; ALUGraph ug (edge_array, edge_array+num_edges, weights, num_edges); typedef adjacency_matrix< undirectedS, no_property, property<edge_weight_t, float> > AMUGraph; AMUGraph ug2 (edge_array, edge_array + num_edges, num_edges, weights); Here I'm trying to create two versions of the graph. If I comment the construction of ug2 everything works fine, but if I leave it uncommented, the former error is generated. I've been googling for help but I've found nothing that could help me. Any help will be welcome!! Thanks in advance.
participants (1)
-
Gerard Guerrero