Boost logo

Boost :

From: Krishna Padmasola (krishna_at_[hidden])
Date: 2000-10-13 04:28:19


Hi Jeremy,

I am defining a graph property which is of type int. I am supplying an
int argument to the constructor, which is getting interpreted as the
number of vertices rather than the graph property.

The constructor 2 (see below) is getting called rather than constructor
1.

Is there a fix/workaround?

Thanks in advance,
Krishna.

1. inline adjacency_list(const GraphProperty& p = GraphProperty())
      : m_property(p) { }

2. inline adjacency_list(vertices_size_type num_vertices,
                          const GraphProperty& p = GraphProperty())
      : Base(num_vertices), m_property(p) { }

the following does not work:

enum vertex_Node_t {vertex_Node = 200};
enum edge_Edge_t {edge_Edge = 201};
enum graph_Layer_t {graph_Layer = 202};
namespace boost {
    BOOST_INSTALL_PROPERTY(vertex, Node);
    BOOST_INSTALL_PROPERTY(edge, Edge);
    BOOST_INSTALL_PROPERTY(graph, Layer);
}

typedef property<vertex_Node_t, string> VertexPlugin;
typedef property<edge_Edge_t, string> EdgePlugin;
typedef property<graph_Layer_t, int> LayerPlugin;

typedef adjacency_list <listS, listS, bidirectionalS,
            VertexPlugin, EdgePlugin, LayerPlugin> Graph;

int main ()
{
   Graph g (999); // does not initialize the graph property with 999.
   cout << num_vertices (g) << endl; // prints 999 instead of zero.
   return 0;
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk