2016-04-01 15 views
0

リンクリストlist<Passenger> flight listで実行される航空会社予約システムを作成しました。C++リンクリスト - コンストラクタと演算子オーバーロード

私が書いた機能はうまくいくはずですが、私は乗客のクラスを正しく取得できないため、テストできません。

(database.h)

class Passenger 
{ 
public: 
    Passenger(string, string, string); 
    ~Passenger(); 
    Passenger operator==(const Passenger&) const; 
    Passenger operator<(const Passenger&) const; 
    void read_from_file(list<Passenger>&, string); 
    void insert(list<Passenger>&, string, string, string); 
    void remove(list<Passenger>&, string, string, string); 
    bool check_reservation(list<Passenger>&, string, string); 
    void display_list(list<Passenger>&); 
    void save_to_file(list<Passenger>&, string, string, string); 

private: 
    string fname; 
    string lname; 
    string destination; 
}; 

(database.cc)

Passenger::Passenger(string first, string last, string dest) 
{ 
    fname = first; 
    lname = last; 
    destination = dest; 
} 

Passenger::~Passenger() 
{ 

} 

Passenger Passenger::operator==(const Passenger&) 
{ 

} 

Passenger Passenger::operator<(const Passenger&) 
{ 

} 

オペレータはファーストネームとラストネームを比較するように過負荷となるようにすべきですリストは姓で辞書的にソートされます。

正しい方向の任意の点が非常に役立ちます。

ありがとうございます!比較はbool、ないPassengerを返すべき

Passenger operator==(const Passenger&) const; 
Passenger operator<(const Passenger&) const; 

+0

辞書的ソートあなただけのためにウェブを検索していない理由は、珍しくないですいくつかの例?つまり、関数のシグネチャ(および演算子はC++の関数でもあります)は不適切です。 –

答えて

1

問題は、あなたのオペレータのオーバーロードのsigantureです。次の実装で例えば

bool operator==(const Passenger&) const; 
bool operator<(const Passenger&) const; 

::だからしてみてください、ここで

// and don't forget the trailng const to match the signature ! 
bool Passenger::operator==(const Passenger& p) const 
{ 
    return fname==p.fname && lname==p.lname; 
} 

bool Passenger::operator<(const Passenger& p) const 
{ 
    return fname<p.fname || (fname==p.fname && lname<p.lname); 
} 

そしてonline demo

関連する問題