C++ 矢量问题 - “LNK2001:无法解析的外部符号私有:静态...”

2023-12-30

在有人指责我不考虑预先存在的问题之前,我已经查看并意识到这与声明有关,但我仍然无法让它工作(可能与我使用向量有关)。

经理.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

管理器.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:错误LNK2001: 未解析的外部符号“私有: 静态结构向量 经理::机场” (?机场@Manager@@0U?$Vector@UAirport@@@@A)

Manager.obj:错误LNK2001: 未解析的外部符号“私有: 静态结构向量 经理::航班” (?航班@Manager@@0U?$Vector@UFlight@@@@A)

我意识到我需要定义向量,但是如何以及在哪里?我尝试创建一个空的构造函数,然后执行

Manager::Manager ()
{
    vector<string> flights;
    vector<string> airports;
}

但它只是给了我一个重新定义错误。


你必须在中定义它们.cpp file:

vector<string> Manager::flights;
vector<string> Manager::airports;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 矢量问题 - “LNK2001:无法解析的外部符号私有:静态...” 的相关文章

随机推荐