Я пытаюсь преобразовать использование алгоритма boost::graph
в новый набор классов реализации. Мне интересно: возможно ли получить доступ к свойствам объекта, если boost::graph
хранит только std::shared_ptr
ссылок? Как и в следующем:Доступ к функции-члену std :: shared_ptr в boost :: graph?
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
или каких-либо других свойств в реализации?
Спасибо!
Спасибо ... хотя моя текущая версия подталкивание (v1.50) не знаю 'make_transform_value_property_map', я считаю. После этого я должен проверить, является ли мой компилятор (MSVC2010), если он поддерживает этот синтаксис 'Name {}'. – Hhut
Замените его 'Name()' ... – sehe
Введена карта свойств Transform-value r77535 25 марта 2012 года, а это значит, что она не меньше 1.56. У меня есть альтернативная идея. Подожди – sehe