
Hi Sebastian,
Hi folks!
I got a cyclic type-dependency problem. I am trying to let every vertex store a iterator to a list which stores vertex-iterators. This sounds weired, but I need to keep track of very few vertices within my graph which have a particle located at it. Thus I created a list of vertex-iterators who carry my particle positions in the graph. In order to be able to tell quickly if a vertice is taken by a particle I want each vertice to include a pointer to a null element representing the absence of a particle or a pointer into that list. My non-working code looks like:
Definition of my graph:
struct Spot { // acutally I need the vertex_iterator to be defined already // in order to define particle, but this is not yet defined // so I am using the knowledge that it is going to be represented // by a vector<std::size_t>::iterator (at least I hope so) // this assumption is WRONG!! typedef std::list< std::vector<std::size_t>::iterator >::iterator \\
There are two approaches. 1. Use pimpl or incomplete type to postpone defining the property type until you know the iterator type. struct Spot; typedef boost::adjacency_list<boost::vecS, boost::vecS, \\ boost::undirectedS, Spot* > graph_t; struct Spot { ............. } ; 2. Don't bother with iterators, store vector<unsigned> inside the Spot class. For VecS/VecS graph, using unsigned to identify vertices should be OK. BTW, I'm not sure why your code does not work. It should work, maybe after changing size_t to int -- don't remember if vertex_descrption is signed or not. - Volodya