Этот вопрос касается Boost Graph Library
.BGL: связанный объект без конструктора по умолчанию?
Предположим, что мой тип графа определяется следующим образом:
using Graph = boost::adjacency_list<vecS, setS, directedS, State>;
Теперь, если я правильно понимаю, я могу добавить новый State
объект s
на графике, как это:
auto vd = add_vertex(g); // g is a Graph object
g[vd] = s;
Там являются две проблемы следующим образом:
для этого требуется
State
, чтобы иметь конструктор по умолчанию. В случае этого конкретного классаState
конструктор по умолчанию просто не имеет смысла.Таким образом, я плачу за строительство по умолчанию объекта
State
при добавлении вершины. Эта стоимость является чистой накладной.
Итак, существует ли способ избежать необходимости создания конструктора по умолчанию для связанных объектов?
ли вам все еще нужно 'г [VD] = s'? Кроме того, мой тип «Graph» подходит для использования с этой перегрузкой? – AlwaysLearning
Вы можете просто посмотреть в связанной документации. Но да, это должно быть применимо. Однако требования к типу собственности не изменяются, поэтому рассмотрим систематический снимок. – sehe