Can';t使用Boost graphviz.hpp编译代码
我试图使用read_graphviz扩展名将graphviz.dot文件拉入Boost Grpah。这是我的样品。我无法编译它。我在代码之后发布了g++错误消息,但是我不得不这么做,但是它很短,如果不进行重大的重新格式化,就无法在这里发布 graphviz.hpp库中的文档过于简洁,无法指导我正确的方向。有人有什么想法吗Can';t使用Boost graphviz.hpp编译代码,boost,graphviz,Boost,Graphviz,我试图使用read_graphviz扩展名将graphviz.dot文件拉入Boost Grpah。这是我的样品。我无法编译它。我在代码之后发布了g++错误消息,但是我不得不这么做,但是它很短,如果不进行重大的重新格式化,就无法在这里发布 graphviz.hpp库中的文档过于简洁,无法指导我正确的方向。有人有什么想法吗 #include <iostream> #include <boost/graph/graph_traits.hpp> #include <boo
#include <iostream>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/property_map.hpp>
#include <boost/graph/graphviz.hpp>
int main( int argc, char* argv[] )
{
assert( argc == 2 );
std::ifstream dotFile( argv[1], std::ifstream::in );
typedef boost::adjacency_list<> Graph;
Graph graph( 17 );
boost::dynamic_properties properties;
boost::property_map< Graph, boost::vertex_name_t >::type name = get( boost::vertex_name, graph );
properties.property( "node_id", name );
bool readResult;
readResult = read_graphviz( dotFile, graph, properties );
return 0;
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
断言(argc==2);
std::ifstream点文件(argv[1],std::ifstream::in);
typedef boost::邻接列表图;
图表(17);
boost::动态_属性;
boost::property\u map::type name=get(boost::vertex\u name,Graph);
属性(“节点id”,名称);
bool-readResult;
readResult=read_graphviz(点文件、图形、属性);
返回0;
g++-Wall-c-o graphvizTest.o graphvizTest.cpp
/usr/include/boost/dynamic_property_map.hpp:在成员函数中
std::string boost::detail::动态属性映射适配器::获取字符串(const boost::any&)
[带属性映射=
矢量调整列表顶点属性映射<
boost::邻接列表<
boost::vecS,boost::vecS,boost::directedS,
boost::no_属性,boost::no_属性,
boost::no_属性,boost::list
>,
boost::邻接列表<
boost::vecS,boost::vecS,boost::directedS,boost::no_属性,
boost::no_属性,boost::no_属性,boost::list
>*,
boost::detail::找不到错误\u属性\u,
boost::detail::error\u property\u未找到&,
boost::顶点名称
>
]':
graphvizTest.cpp:29:从此处实例化
/usr/include/boost/dynamic_property_map.hpp:196:错误:与“运算符”不匹配,
Reference=boost::detail::error\u property\u not\u found&,K=long unsigned int
]
...
图形中没有名为name
的节点属性,因此从get(boost::vertex\u name,graph)
获取的属性映射是错误的。请查看文档,了解如何为boost::vertex\u name
添加顶点属性(使用旧式属性)或者添加一个捆绑属性来表示名称,并在dynamic_properties
对象中使用该属性而不是get
表达式。您没有包括graphvizTest.cpp的第29行……我在提交问题时清理了代码并删除了几行。导致错误的那一行是最后一行的第二行,即ca我要读一读图表。
g++ -Wall -c -o graphvizTest.o graphvizTest.cpp
/usr/include/boost/dynamic_property_map.hpp: In member function
std::string boost::detail::dynamic_property_map_adaptor<PropertyMap>::get_string(const boost::any&)
[with PropertyMap =
boost::vec_adj_list_vertex_property_map<
boost::adjacency_list<
boost::vecS, boost::vecS, boost::directedS,
boost::no_property, boost::no_property,
boost::no_property, boost::listS
>,
boost::adjacency_list<
boost::vecS, boost::vecS, boost::directedS, boost::no_property,
boost::no_property, boost::no_property, boost::listS
>*,
boost::detail::error_property_not_found,
boost::detail::error_property_not_found&,
boost::vertex_name_t
>
]':
graphvizTest.cpp:29: instantiated from here
/usr/include/boost/dynamic_property_map.hpp:196: error: no match for 'operator<<' in 'out << boost::get
[with
PropertyMap =
boost::vec_adj_list_vertex_property_map<
boost::adjacency_list<
boost::vecS, boost::vecS, boost::directedS, boost::no_property, boost::no_property,
boost::no_property, boost::listS
>,
boost::adjacency_list<
boost::vecS, boost::vecS, boost::directedS, boost::no_property, boost::no_property,
boost::no_property, boost::listS
>*,
boost::detail::error_property_not_found,
boost::detail::error_property_not_found&,
boost::vertex_name_t
>,
Reference = boost::detail::error_property_not_found&, K = long unsigned int
]
...