2017-02-01 5 views
0

У меня есть два класса внутри файла заголовка, второй класс зависит от 1-го. Включая этот файл заголовка в .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