dear everyone
I want to construct multicast tree base on the network topology generated by the stanford graph.
The source code below can run without error, and have the right output:
The file is open!
m:28
n:10
But when I add the algrithom dijkstra_shortest_paths.
The error messages show as below:
Description Resource Path Location Type
no matching function for call to ‘num_vertices(Graph* const&)’ MulticastTree2 line 190,
external location: /usr/include/boost/graph/dijkstra_shortest_paths.hpp C/C++ Problem
Description Resource Path Location Type
no matching function for call to ‘out_edges(Vertex*&, Graph* const&)’ MulticastTree2 line 76,
external location: /usr/include/boost/graph/breadth_first_search.hpp C/C++ Problem
Description Resource Path Location Type
no matching function for call to ‘vertices(Graph* const&)’ MulticastTree2 line 375,
external location: /usr/include/boost/graph/dijkstra_shortest_paths.hpp C/C++ Problem
I find the num_vertices\out_edges\vertices are redefined in the stanford_graph.hpp.
So I change the order of the include files as below:
#include <boost/graph/stanford_graph.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
The errors above disappear, and New errors come up:
Description Resource Path Location Type
‘g’ was not declared in this scope MulticastTree2 line 408,
external location: /usr/include/boost/graph/named_function_params.hpp C/C++ Problem
Description Resource Path Location Type
‘t’ was not declared in this scope MulticastTree2 line 408,
external location: /usr/include/boost/graph/named_function_params.hpp C/C++ Problem
Description Resource Path Location Type
‘u’ was not declared in this scope MulticastTree2 line 463,
external location: /usr/include/boost/pending/relaxed_heap.hpp C/C++ Problem
Description Resource Path Location Type
expected ‘,’ or ‘...’ before ‘.’ token MulticastTree2 line 402,
external location: /usr/include/boost/graph/named_function_params.hpp C/C++ Problem
Description Resource Path Location Type
expected initializer before ‘.’ token MulticastTree2 line 462,
external location: /usr/include/boost/pending/relaxed_heap.hpp C/C++ Problem
It's confusing for me, can you tell me what's the problem is
and any way i can try to solve the problems above.
Thank you.
source code:
#include <boost/config.hpp>
#include <iostream>
#include <string>
#include <fstream>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
#include <boost/graph/stanford_graph.hpp>
using namespace boost;
int main(int argc, char *argv[])
{
Graph* inputG;
char *in_filename = "r10-0.gb";
inputG = restore_graph(in_filename);
if (inputG){
std::cout << "The file is open!" << "\n";
std::cout << "m:" << inputG->m << "\n";
std::cout << "n:" << inputG->n << "\n";
}
else
return 0;
graph_traits<Graph*>::vertex_descriptor s = *boost::vertices(inputG).first;
typedef property_map<Graph*, z_property<long> >::type Distance;
Distance d = get(z_property<long>(), inputG);
typedef property_map<Graph*, w_property<Vertex*> >::type Parent;
Parent p = get(w_property<Vertex*>(), inputG);
// dijkstra_shortest_paths(inputG, s,
// predecessor_map(get(w_property<Vertex*>(), inputG)).
// distance_map(get(z_property<long>(), inputG)).
// weight_map(get(edge_length_t(), inputG))
// );
gb_recycle(inputG);
return 1;
}