Jak zmodyfikować właściwości wiązanego wierzchołka wewnątrz obiektu odwiedzającego?Modyfikowanie właściwości wiązanych przez odwiedzającego
Chciałbym użyć prostej metody podkatalogowania wykresu, ale parametr graficzny przekazany do użytkownika to const, więc kompilator nie dopuszcza zmian.
Mogę zapisać odniesienie do wykresu na stronie, ale wydaje się to dziwne.
/**
A visitor which identifies vertices as leafs or trees
*/
class bfs_vis_leaf_finder:public default_bfs_visitor {
public:
/**
Constructor
@param[in] total reference to int variable to store total number of leaves
@param[in] g reference to graph (used to modify bundled properties)
*/
bfs_vis_leaf_finder(int& total, graph_t& g) :
myTotal(total), myGraph(g)
{
myTotal = 0;
}
/**
Called when the search finds a new vertex
If the vertex has no children, it is a leaf and the total leaf count is incremented
*/
template <typename Vertex, typename Graph>
void discover_vertex(Vertex u, Graph& g)
{
if(out_edges(u, g).first == out_edges(u, g).second) {
myTotal++;
//g[u].myLevel = s3d::cV::leaf;
myGraph[u].myLevel = s3d::cV::leaf;
} else {
//g[u].myLevel = s3d::cV::tree;
myGraph[u].myLevel = s3d::cV::tree;
}
}
int& myTotal;
graph_t& myGraph;
};
Zaczynam myśleć, że odniesienie musi być właściwą drogą. Sądziłem, że przeoczyłem coś prostego, ale ponieważ nikt nie sugerował niczego więcej ... – ravenspoint