我正在努力将图表转储到流中,其中所述图表是boost::subgraph
.
我尝试提供一个属性编写器,但基本上它失败了,因为它似乎需要一个方法boost::get(PropertyWriter, VertexDescriptor)
。在图表不subgraph
符合预期的情况下使用相同的方法。
如发现here,我必须使用a boost::dynamic_properties
(见下面的代码),但当我的图表不可写时它会失败(而文档表明该图表被视为一个约束参考)。
这是一个我无法开始工作的简单示例:
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/subgraph.hpp>
struct VertexProperties
{
std::string name;
};
int main()
{
typedef boost::subgraph<
boost::adjacency_list<
boost::vecS, boost::vecS,
boost::directedS,
boost::property<boost::vertex_index_t, std::size_t, VertexProperties>,
boost::property<boost::edge_index_t, std::size_t> > > Graph;
Graph const g;
boost::dynamic_properties dp;
dp.property("name", boost::get(&VertexProperties::name, g));
dp.property("node_id", boost::get(boost::vertex_index, g));
boost::write_graphviz_dp(std::cout, g, dp);
}
欢迎任何提示!非常感谢,
编辑
我忘了提及在我的案例中“失败”是什么意思;这是我尝试编译时的错误:
错误:将 'const std::basic_string' 作为 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string <_CharT, _Traits, _Alloc>&) [with _CharT = char, _Traits = std::char_traits, _Alloc = std::allocator, std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string]' 丢弃限定符 [ -fpermissive]