BGL捆绑属性add_edge“无匹配功能”

时间:2011-01-26 21:27:22

标签: boost boost-graph

我创建了一个struct,并将其用作adjacency_list的模板参数。但是,当我尝试add_edge(vertex1,vertex2,property,graph)时,编译器会抱怨“没有匹配的函数调用”。谁能看到我在这里出错的地方?

#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;
}

谢谢,

大卫

1 个答案:

答案 0 :(得分:4)

在此代码中,MyProperty被声明为顶点属性而不是边属性,因此使用该属性插入边是没有意义的。尝试在boost::no_property typedef。

MyProperty之前添加adjacency_list