2016-04-03 10 views
2

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

+2

, 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

cevap

0
bool Flightlist::check_reservation(Passenger p); 

check_reservation fonksiyonunun bağımsız değişken, referans ile iletilmesi gereken veya Passenger sınıfı atayacaktır fonksiyonu uygulanmalıdır.

bool Flightlist::check_reservation(Passenger & p); 

ya:

Gördüğüm kadarıyla
class Passenger { 
public: 
    Passenger() {} 
    Passenger(string, string, string); 
    Passenger(const Passenger&); 
    void operator=(const Passenger&) const; 
    bool operator==(const Passenger&) const; 

    bool operator<(const Passenger&) const; 
private: 
    string fname, lname, destination; 

}; 
+0

check_reserve işlevi aslında orada çalışan tek mi? – Brittany

+0

@Brittany Aksi takdirde, Pasenger – lulyon

+0

için nesne atama işlevini uygulamanız yeterlidir. Display_list ve save_to_file sınıfları için? – Brittany