在任何人打電話給我不查看以前存在的問題之前,我已經看到並意識到它是與聲明有關,但我仍然無法實現它的功能(可能與我使用矢量有關)。C++矢量問題 - 'LNK2001:無法解析的外部符號private:static ...'
Manager.h:
#include "Flight.h"
#ifndef manager_h
#define manager_h
class Manager {
static vector<Airport> airports;
static vector<Flight> flights;
public:
static void loadAirports();
static void loadFlights();
static Airport getAirport(string code);
static vector<string> split(const string &s, vector<string> &elems);
};
#endif
Manager.cpp:
#include "Manager.h"
void Manager::loadAirports()
{
ifstream airportfile("airports.txt");
string line;
while (getline(airportfile, line))
{
vector<string> values;
split(line, values);
Airport airport (values[0], values[1], atoi(values[2].c_str()));
airports.push_back(airport);
}
}
void Manager::loadFlights()
{
ifstream flightfile("flights.txt");
string line;
while (getline(flightfile, line))
{
vector<string> values;
split(line, values);
Flight flight (getAirport(values[0]), getAirport(values[1]), atoi(values[2].c_str()), atoi(values[3].c_str()));
flights.push_back(flight);
}
cout << flights.size() << endl;
}
Airport Manager::getAirport (string code)
{
for (int i = 1; i < (int)airports.size(); i++)
{
if (airports[i].code == code)
return airports[i];
}
throw exception();
}
vector<string> Manager::split(const string &s, vector<string> &elems) {
stringstream ss(s);
string item;
while(getline(ss, item, ',')) {
elems.push_back(item);
}
return elems;
}
這是引發此錯誤:
Manager.obj : error LNK2001: unresolved external symbol "private: static struct Vector Manager::airports" ([email protected]@@[email protected]@@@@A)
Manager.obj : error LNK2001: unresolved external symbol "private: static struct Vector Manager::flights" ([email protected]@@[email protected]@@@@A)
我意識到我需要定義的載體,但如何和哪裏?我試圖創建一個空的構造函數,然後做
Manager::Manager()
{
vector<string> flights;
vector<string> airports;
}
但它只是給了我一個重新定義的錯誤。
它們爲什麼是而不是? –
conterio
2015-07-17 21:37:40