0

シンプルなブースト::グラフの実装に苦労しています。私が見つけることができるすべてのドキュメントと例などを読み込もうとしました...

これが私のコードです(StackOverflowの他の例からコピーされました)

頂点:

class customvertex
{
public:
    double some_member;
};

訪問者:

class MyVisitor : public boost::default_dfs_visitor
{
public:
    void discover_vertex(MyGraphVertex v, const MyGraph& g) const
    {
        std::cout << v << std::endl;
        return;
    }
};

typedef 宣言:

typedef boost::adjacency_list<boost::vecS,boost::vecS,boost::undirectedS, customvertex> MyGraph;
typedef boost::graph_traits<MyGraph>::vertex_descriptor MyGraphVertex;

問題を引き起こすコード:

MyGraph theGraph;
customvertex a;
MyGraphVertex vert_a = boost::add_vertex(a, theGraph);

customvertex b;
MyGraphVertex vert_b = boost::add_vertex(b, theGraph);

boost::add_edge(vert_a , vert_b, theGraph);

MyVisitor vis;
boost::depth_first_search(theGraph, boost::visitor(MyVisitor()));

depth_first_search の最後の呼び出しにより、コンパイラは 112 行のカスケード エラーをスローします。
コンセプトは IncidenceGraphConcept と MultiPassInputIterator のようです

重要な部分は次のようです。

1>        T:\boost\boost_1_47_0\boost/concept/detail/msvc.hpp(23) : while compiling class template member function 'void boost::concepts::check<Model>::failed(Model *)'
1>        with
1>        [
1>            Model=boost::SignedInteger<int>
1>        ]

1>        T:\boost\boost_1_47_0\boost/graph/depth_first_search.hpp(83) : see reference to function template instantiation 'void boost::function_requires<boost::concepts::IncidenceGraphConcept<G>>(Model *)' being compiled
1>        with
1>        [
1>            G=MyGraph,
1>            Model=boost::concepts::IncidenceGraphConcept<MyGraph>
1>        ]
1>        T:\boost\boost_1_47_0\boost/graph/depth_first_search.hpp(202) : see reference to function template instantiation 'void boost::detail::depth_first_visit_impl<VertexListGraph,DFSVisitor,ColorMap,boost::detail::nontruth2>(const IncidenceGraph &,unsigned int,DFSVisitor &,ColorMap,TerminatorFunc)' being compiled
1>        with
1>        [
1>            VertexListGraph=MyGraph,
1>            DFSVisitor=const MyVisitor,
1>            ColorMap=boost::shared_array_property_map<boost::default_color_type,boost::vec_adj_list_vertex_id_map<boost::property<boost::vertex_bundle_t,customvertex>,unsigned int>>,
1>            IncidenceGraph=MyGraph,
1>            TerminatorFunc=boost::detail::nontruth2
1>        ]

ありとあらゆる助けが最も高く評価されています。簡単なものが欠けていると確信しており、通常は例から理解できます。boost::graph は見栄えがよく、必要なものにぴったりだと思いますが、もう少しドキュメントが......

私はテンプレート プログラミングの経験はかなりありますが、これに何時間も費やしてしまったので、助けを求める時間です!

4

1 に答える 1