
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.