|
Boost Users : |
From: Olivier Tournaire (olitour_at_[hidden])
Date: 2007-11-09 13:47:54
OK, I found the solution :
for(boost::tie(first, last)=edges(*this);first!=last;++first)
instead of
for(boost::tie(first, last)=edges(this);first!=last;++first)
2007/11/9, Olivier Tournaire <olitour_at_[hidden]>:
>
> Hi all,
>
> I want to derive a class from adjacency_list :
>
> template <class NodesContainer = boost::vecS,
> class EdgesContainer = boost::vecS,
> class Directed = boost::undirectedS,
> class NodesAttributes = boost::no_property,
> class EdgesAttributes = boost::no_property
> > class BGL_Graph : public boost::adjacency_list<NodesContainer,
> EdgesContainer,
> Directed,
> NodesAttributes,
> EdgesAttributes
> >
> {
> /// ... many typedefs
> /// ...
> };
>
> I also have an other derived class from BGL_Graph :
>
> class MPPRectangleGraph : public
> BGL_Graph<boost::vecS,boost::vecS,boost::undirectedS,MPPRectangleGraphNode,Weight>
>
> {
> public:
> MPPRectangleGraph() {is_init_ = false;};
> ~MPPRectangleGraph();
>
> void InitDisplay(std::string name = "MPP",
> unsigned int width = 200,
> unsigned int height = 200);
> void Draw( unsigned int flags = DRAW_NOTHING);
> void Display( unsigned int flags = DRAW_NOTHING );
>
> protected:
> private:
> bool is_init_;
> IdFenetreCalques window_;
> IdCalqueVecteur layer_rectangle_;
> IdCalqueVecteur layer_profiles_;
> IdCalqueVecteur layer_neighborhood_;
> IdCalqueVecteur layer_edges_;
> };
>
> My problem is how can I iterate on the edges in a method of
> MPPRectangleGraph ?
>
> void MPPRectangleGraph::Draw( unsigned int flags )
> {
> // On recupere les differents flags d'affichage
> bool draw_rect = false, draw_profiles = false, draw_neighborhood =
> false, draw_edges = false;
> if ( flags&DRAW_RECTANGLE )
> draw_rect = true;
> if ( flags&DRAW_PROFILES )
> draw_profiles = true;
> if ( flags&DRAW_NEIGHBORHOOD )
> draw_neighborhood = true;
> if ( flags&DRAW_EDGES )
> draw_edges = true;
>
> // On vide tous les calques
> layer_rectangle_.Clear();
> layer_profiles_.Clear();
> layer_neighborhood_.Clear();
> layer_edges_.Clear();
>
> // On fait l'affichage en fonction des flags recuperes
> // Les aretes
> MPPRectangleGraph::edge_iterator first, last;
> for(boost::tie(first, last)=edges(this);first!=last;++first) // does
> not work !
> {
> //std::cout << boost::source(*first, g) << " to " <<
> boost::target(*first, g) << " = ";
> }
> }
>
> Regards
>
>
> --
> Le temps des cerises reviendra. Dans l'immédiat, c'est le temps des
> noyaux. Courage.
-- Le temps des cerises reviendra. Dans l'immédiat, c'est le temps des noyaux. Courage.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net