2017-02-01 134 views
0

我有一個頭文件中的兩個類,第二個類依賴於第一個類。 將此頭文件包含在一個.cpp文件中,我在其中實現了Flight類的構造函數原型。編譯給我下面的錯誤:C++一個對象(創建)在另一個類中的數組

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

這裏是我的頭文件

/* 
*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];調用沒有任何參數的構造函數Passenger()但沒有聲明導致錯誤。

+0

將添加一個名稱沒有值的構造函數會影響列表嗎? 我正在嘗試製作一個乘客對象列表,即它也會包含乘客姓名,seatNo和FlightNo。這樣我就可以 cout << list [2] .lastName 有什麼額外的事情我需要做? – Mish

+0

不,它不會影響列表,但乘客對象不會有任何有效的seatNo,FlightNo等值,這取決於你以後正確初始化它們.. – bluefalcon

相關問題