У меня проблема с компиляцией моих файлов.Я скомпилировал и получил это сообщение
"Undefined symbols for architecture x86_64:
"_airport_label", referenced from:
FlightMap::pathfind_before(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
FlightMap::pathfind(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
"_dijkstra", referenced from:
FlightMap::findShortestRoute(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
FlightMap::pathfind_before(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
FlightMap::fun_dijkstra(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
(maybe you meant: __ZN9FlightMap12fun_dijkstraERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE)
"_distance_label", referenced from:
FlightMap::pathfind_before(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
FlightMap::pathfind(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
"_path", referenced from:
FlightMap::pathfind(std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char> > const&,
std::__1::basic_string<char, std::__1::char_traits<char>,
std::__1::allocator<char> > const&) in FlightMap-9a7ab0.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)"
Я думаю, что есть некоторые проблемы с глобальной переменной в файле FlightMap.h.
(я редактировал Flight.h -> FlightMap.h) Я объявил 4 глобальные переменныекак
stack<string> path;
map<string, string > airport_label;
map<double, string > distance_label;
map<string, double > dijkstra;
Я уже пытался поставить "extern" перед каждой глобальной переменной, но она не работает.
В коде файла FlightMap.h (Отредактировано Flight.h ->FlightMap.h)
#ifndef LAB6_FLIGHTMAP_H
#define LAB6_FLIGHTMAP_H
#include <iostream>
#include <string>
#include <stdexcept>
#include <map>
#include <list>
#include <vector>
#include <stack>
#include "AdjacencyListDirectedGraph.h"
extern stack<string> path;
extern map<string, string > airport_label;
extern map<double, string > distance_label;
extern map<string, double > dijkstra;
.
.
.
Кроме того, эти глобальные переменные используются в файле FlightMap.cpp. (Я редактировал!)
Я думаю, что именно здесь возникают проблемы