Boost logo

Boost Users :

From: Olivier Tournaire (olitour_at_[hidden])
Date: 2007-11-09 13:32:43


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.


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