I have created a struct, and used it as a template parameter to adjacency_list. However, when I try to add_edge(vertex1, vertex2, property, graph) , the compiler complains "no matching function call". Can anyone see where I've gone wrong here?
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
// Create a struct to hold several properties
struct MyProperty
{
int MyIntProperty;
};
// Define the type of the graph
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, MyProperty> Graph;
int main(int,char*[])
{
// Create a graph object
Graph g(2);
// Add an edge between node 0 and node 1 with weight 1.2
MyProperty p;
p.MyIntProperty = 5;
std::cout << p.MyIntProperty << std::endl;
add_edge(0, 1, p, g);
return 0;
}
Thanks,
David
In this code, MyProperty
is declared as a vertex property rather than an edge property, and so it doesn't make sense to insert edges with that property. Try adding boost::no_property
before MyProperty
in your adjacency_list
typedef.