Bağlı bir nesne listesinde uygulanacak çok sayıda işleve sahibim. Yazmak için bıraktığım tek şey, benim için oldukça zor olduğunu kanıtlayan display_list()
ve save_to_file()
işlevler. Şu anda Yolcu nesneleri yerine dizelerle nasıl yapıldığına ilişkin bir kodum var, ancak dönüşümlerimin hiçbiri çalışmıyor. Aşağıda dosyaların sadece ilgili bölümleri vardır.Görüntüleme ve Bağlantılı Nesneler Listesini Kaydet
main.cc
case 5:
{
display_list();
break;
}
case 6:
{
save_to_file("ticket_reservations.dat");
break;
}
database.h
include<list>
#include<algorithm>
#include<iostream>
#include<string>
#include<fstream>
#ifndef passenger_h
#define passenger_h
using std::string;
using std::cin;
using std::cout;
using std::list;
using std::endl;
class Passenger {
public:
Passenger() {}
Passenger(string, string, string);
bool operator==(const Passenger&) const;
bool operator<(const Passenger&) const;
private:
string fname, lname, destination;
};
class Flightlist {
public:
int menu();
void read_from_file(string);
void insert(Passenger p);
void remove(Passenger p);
bool check_reservation(Passenger p);
void display_list();
void save_to_file(string)
private:
list<Passenger> flist;
};
#endif
database.cc
bool Flightlist::check_reservation(Passenger p) //example of working function
{
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
return flist.end() != find(flist.begin(), flist.end(), p);
}
void display_list()
{
flist.sort();
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
for (; i1 != i2; ++i1) {
cout << *i1 << endl;
}
}
void save_to_file(string filename)
{
flist.sort();
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
ofstream output(filename.c_str());
for (; i1 != i2; ++i1) {
output << *i1 << " ";
}
output.close();
}
sıralama tak gerekir Aşırı yüklenen operatörlerden (== ve <), soyadlarında sözlüksel olarak sıralanmışlardır.
Herhangi bir yardım çok takdir edilecektir! İçinde mevcut değildir
, sen aşırı 'operatörü eksik görünüyor <<' akışı-ekleme yapmak. Bu temelde sorunlarınız mı var? Operatöre aşırı yükleme ile ilgili sorular için, sizi [bu soru ve cevapları] (https://stackoverflow.com/questions/4421706/operator-overloading) adresine yönlendiririm. Spesifik olarak, yıldız seçilen cevapta "Bitshift Operatörleri (Stream I/O için kullanılır") konusuna bakın. – WhozCraig