gpt4 book ai didi

c++ - 用于存储航类的 LinkedQueue 实现

转载 作者:太空宇宙 更新时间:2023-11-04 12:38:53 26 4
gpt4 key购买 nike

我正在尝试用 C++ 实现一个 LinkedQueue 结构来存储一些航类的数据。

所以,首先我必须读取一个 csv 文件,它提供了要存储的数据。LinkedQueue 必须以这种方式工作:必须使用 Flight 类存储每个 Flight 的属性,然后 LinkedQueue 必须有一个名为 FlightNode 的特定节点来最终存储航类。我的代码无法编译,因为我无法以正确的方式实现 getNext() 函数。

我在下面给出了我的代码以及每个类的实现。如果你们能提出任何建议,那将非常有帮助。

非常感谢!!

这是我的 Flight.h 头类:

class Flight { 
public:
Flight();
virtual ~Flight();
string getID();
void setID(string new_id);
string getOrigen();
void setOrigen(string new_origen);
string getDesti();
void setDesti(string new_desti);
string getHora();
void setHora(string new_hora);

private:
string id;
string origen;
string desti;
string hora_sortida;

};

飞行.cpp:

Flight::Flight() {

}

Flight::~Flight() {
}

string Flight::getID(){
return id;
}

string Flight::getOrigen(){
return origen;
}

string Flight::getDesti(){
return desti;
}

string Flight::getHora(){
return hora_sortida;
}

void Flight::setID(string new_id){
id = new_id;
}

void Flight::setOrigen(string new_origen){
origen = new_origen;
}

void Flight::setDesti(string new_desti){
desti = new_desti;
}

void Flight::setHora(string new_hora){
hora_sortida = new_hora;
}

飞行节点.h:

class FlightNode {
public:
FlightNode(Flight& f);
FlightNode(const FlightNode& orig);
virtual ~FlightNode();
FlightNode* getNext();
void setNext(FlightNode* n);
Flight& getElement();
private:
Flight* _element;
FlightNode* _next;

};

飞行节点.cpp:

FlightNode::FlightNode(Flight& f) {
this->_element = &f;
this->_next = nullptr;
}

FlightNode::FlightNode(const FlightNode& orig) {
}

FlightNode::~FlightNode() {
}
FlightNode* FlightNode::getNext(){
return this->_next;
}

void FlightNode::setNext(FlightNode* n){
this->_next = n;
}

Flight& FlightNode::getElement(){
//Don't know how to implement this one, because I declared _element as a pointer but what I need here is to return a reference.
}

主要.cpp:

    string id;
string origen;
string desti;
string hora;

fstream fin;
fin.open("flights.csv", ios::in);

string line, word;
string id, origen, desti, hora;

while (getline(fin, line)) {
stringstream in(line);
Flight* new_flight = new Flight;
for (int i = 0; getline(in, word, ','); ++i) {
switch (i) {
case 0:
new_flight->setID(word);
break;
case 1:
new_flight->setOrigen(word);
break;
case 2:
new_flight->setDesti(word);
break;
case 3:
new_flight->setHora(word);
break;
}
}
cout << "id:" << new_flight->getID() << " origen:" << new_flight->getOrigen() << " desti: " << new_flight->getDesti() << endl;
queue.enqueue(*new_flight);
}

最佳答案

你可以只返回指针后面的引用:

return *_element;

但是,如果您打算这样做,请确保指针在上述取消引用时不为空。

关于c++ - 用于存储航类的 LinkedQueue 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55241080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com