2

構造体を作成し、それを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;
}

ありがとう、

デビッド

4

1 に答える 1

4

このコードでMyPropertyは、はエッジプロパティではなく頂点プロパティとして宣言されているため、そのプロパティでエッジを挿入することは意味がありません。boost::no_property以前MyPropertyadjacency_listtypedefに追加してみてください。

于 2011-01-27T18:44:45.323 に答える