2017-02-01 21 views
0

2番目のクラスは1番目に依存する2つのクラスをヘッダファイル内に持っています。 このヘッダーファイルをFlightクラスのコンストラクタプロトタイプを実装する.cppファイルに含めます。コンパイルは私に次のエラーを与える:C++別のクラスの中にオブジェクト(作成済み)の配列

Error: no matching function for call to ‘Passenger::Passenger()’ 
     Flight::Flight(int maxPassenger, int flightNo) { 

は、ここに私のヘッダファイル内の2つのクラス

/* 
*Passenger Class: 
*/ 
class Passenger 
{ 
public: 
    int flightNo; 
    string lastName; 
    string firstName; 
    int seatNo; 
public: 
    Passenger(int flightNo, string lastName,string firstName, int seatNo); 
}; 
/* 
*Flight Class: 
*/ 
class Flight { 
public: 
    int maxPassenger; 
    int currentPos; 
    int flightNo; 
    Passenger list[20]; 
public: 
    Flight (int maxPassenger, int flightNo); 
} 

だとここでは、コンストラクタの実装です:

Flight::Flight(int maxPassenger, int flightNo) { 
    maxPassenger = maxPassenger; 
    // list = new Passenger [maxPassenger]; 
    flightNo = flightNo; 
} 

私は矛盾があることを理解することができますコンストラクタでしかし、私は何が間違っているのか正確に把握することはできません。どんな助けでも大歓迎です。

答えて

0

ゼロ引数を取るコンストラクタはありません。

このコードlist = new Passenger [maxPassenger];は、引数なしでコンストラクタを呼び出します。が、エラーを引き起こすと宣言されているものはありません。

+0

値に名前を付けないコンストラクタを追加すると、リストに影響がありますか? 私は旅客オブジェクトを取り込むリストを作成しようとしています。つまり、乗客名、seatNo、FlightNoも保持します。そうすることができます cout << list [2] .lastName 私は何をする必要がありますか? – Mish

+0

いいえ、リストには影響しませんが、PassengerオブジェクトにはseatNo、FlightNoなどの有効な値はありません。後で正しく初期化する必要があります。 – bluefalcon

関連する問題