2016-10-11 6 views
3

Я пытаюсь получить доступ к метке графа для форматированного входного файла dot (graphviz) с использованием библиотеки Boost Graph. Ниже ЬурейеЕ для типа графа:Доступ к BGL GraphProperty

struct DotVertex { 
    std::string label; 
}; 

struct DotEdge { 
    std::string label; 
}; 

struct DotGraph { 
    std::string label; 
}; 

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS, 
           DotVertex, DotEdge, DotGraph> graph_t; 

И это, как я задаю динамические свойства:

graph_t graphviz; 

    boost::dynamic_properties dp(boost::ignore_other_properties); 

    dp.property("label",  boost::get(&DotGraph::label,   graphviz)); 
    dp.property("label",  boost::get(&DotVertex::label,   graphviz)); 
    dp.property("label",  boost::get(&DotEdge::label,   graphviz)); 
    std::ifstream ifs("sample.dot"); 
    bool status = boost::read_graphviz(ifs, graphviz, dp); 

Компилятор жалуется на задание на DotGraph :: наклейке с ошибкой сообщение:

read_graph.cc:25:30: error: no matching function for call to 'get' dp.property("label",  boost::get(&DotGraph::label,   graphviz)); 

Может ли кто-нибудь указать, что является удобным способом прочитать метку графа в этом случае? Благодаря!

ответ

3

Успел отобразить свойство графа, используя, как найти в шаге 3 из read_graphviz() in Boost::Graph, pass to constructor:

boost::ref_property_map<graph_t *, std::string> dg_label(get_property(graphviz, &DotGraph::label)); 
    dp.property("label",  dg_label); 

И затем может получить доступ к ярлыку:

std::cout<<get_property(graphviz, &DotGraph::label)<<std::endl; 
+0

я забыл об этом, хотя я написал ответ связан с :) – sehe

 Смежные вопросы

  • Нет связанных вопросов^_^