【发布时间】:2016-02-17 10:26:24
【问题描述】:
我正在努力将 boost::graph 算法的用法转换为一组新的实现类。我想知道:如果boost::graph 只存储std::shared_ptr 引用,是否甚至可以访问对象的属性?如下所示:
class Vert {
public:
Vert();
Vert(std::string n);
std::string getName() const;
void setName( std::string const& n );
private:
std::string name;
};
typedef std::shared_ptr<Vert> Vert_ptr;
using namespace boost;
typedef boost::adjacency_list<vecS, vecS, directedS, Vert_ptr> Graph;
Graph g;
Vert_ptr a( new Vert("a"));
add_vertex( a, g );
std::ofstream dot("test.dot");
write_graphviz( dot, g, make_label_writer(boost::get(&Vert::getName,g))); //ERROR!
是否可以访问 std::shared_ptr 的成员以在图形标签编写器 write_graphviz 或实现中的任何其他属性中使用?
谢谢!
【问题讨论】:
标签: c++ shared-ptr boost-graph boost-property-map