我在嘗試boost :: graph頭文件庫,但我仍然無法將垂直線添加到我的圖中。boost :: graph add_vertex編譯錯誤
這是我如何使用add_vertex功能:
void GraphManager::addToGraph(VertexProperties node){
//no error, but i do not need it
vertex_t v = boost::add_vertex(graph);
//compilation error
vertex_t v = boost::add_vertex(node, graph);
/*...*/
}
我的定義在這裏:
#ifndef GRAPH_DEFINITION_H
#define GRAPH_DEFINITION_H
#include <boost/graph/adjacency_list.hpp>
#include "matchedword.h"
typedef MatchedWord* VertexProperties;
struct EdgeProperties
{
int distance;
EdgeProperties() : distance(0) {}
EdgeProperties(int d) : distance(d) {}
};
struct GraphProperties {
};
typedef boost::adjacency_list<
boost::vecS, boost::vecS, boost::undirectedS,
boost::property<VertexProperties, boost::vertex_bundle_t>,
boost::property<EdgeProperties, boost::edge_bundle_t>,
boost::property<GraphProperties, boost::graph_bundle_t>
> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor vertex_t;
typedef boost::graph_traits<Graph>::edge_descriptor edge_t;
#endif // GRAPH_DEFINITION_H
任何想法? 謝謝。
error: no matching function for call to 'add_vertex(MatchedWord*&, Graph&)' candidates are: [...] template typename Config::vertex_descriptor boost::add_vertex(const typename Config::vertex_property_type&, boost::adj_list_impl&)
note: template argument deduction/substitution failed:
note: 'Graph {aka boost::adjacency_list, boost::property, boost::property >}' is not derived from 'boost::adj_list_impl'
我不明白這個錯誤輸出的意思。
它基本上是說您試圖調用的函數與您放置的參數不存在,但有一個版本具有不同的參數。即該函數存在,但沒有與您提供的參數相匹配的版本。 – refi64
更確切地說,它說,原因是我作爲參數傳遞的圖不是從'boost :: adj_list_impl'派生的。然而,'boost :: add_vertex(boost :: adj_list_impl)'在傳遞我的圖時不起作用,但不是'boost :: add_vertex(boost:vertex_property_type&,boost :: adj_list_impl&)'... – Vulpo