¿Cómo debo modificar las propiedades empaquetadas de un vértice desde el interior de un visitante?Modificación de propiedades agrupadas del visitante
Me gustaría utilizar el método simple de subescribir el gráfico, pero el parámetro del gráfico pasado al visitante es const, por lo que el compilador no permite cambios.
Puedo almacenar una referencia al gráfico en el visitante, pero esto parece extraño.
/**
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;
};
Estoy empezando a pensar que la referencia debe ser el camino. Supuse que estaba pasando por alto algo simple, pero como nadie ha sugerido nada más hasta el momento ... – ravenspoint