#c #algorithm #data-structures
Вопрос:
У меня возникла проблема с доступом к функции класса «график» в другом классе. Внутри класса «Джипни» есть 2 функции, в которых первая заключается в добавлении ребра, а вторая-в получении кратчайшего пути с помощью функции класса «граф», в которой проблема заключается в том, что при доступе к функции из класса «граф» кажется, что добавленных ребер нет. В этой программе я намерен создать неориентированный график и получить доступ к кратчайшему пути.
ГРАФИК КЛАССОВ:
Это функция «add_edge», которая добавляет ребро в график:
public:
//ADD EDGES
void add_edge(T key_name, T connected_node, int distance, bool undirected = true){
map[key_name].push_back(std::make_pair(connected_node, distance));
if(undirected){
map[connected_node].push_back(std::make_pair(key_name, distance));
}
}
КЛАСС ДЖИПНИ
Эта функция вызывает функцию «add_edges» в классе graph, чтобы добавить ребро из другого класса.
auto create_graph(){
Graph<T> G;
G.add_edge("Marikina","Manila",1);
G.add_edge("Manila","Pasig",4);
G.add_edge("Pasig","Manila",2);
return G;
}
Это функция того же класса, что и функция «create_graph», в которой мне нужно было получить доступ к функциям класса «график», и она ничего не напечатала, но я уже создал график в функции «»create_graph», похоже, что края графика не создаются при доступе к этой функции.:
void search_shortest_path(){
create_graph();
Graph<T> G;
std::cout<<"AVAILABLE ROUTESn";
G.print_all_key();
T source;
T destination;
std::cout<<"Enter your starting point: ";
std::cin>>source;
std::cout<<"Enter your destination point: ";
std::cin>>destination;
G.dijkstra_algorithm(source, destination);
}
Комментарии:
1.
Graph<T> G = create_graph();
?