#include #include using namespace std; #include "Car.h" #include "Passenger.h" Car::Car() : m_make("Toyota"), m_model("Corolla"), m_seats(5), m_seatsTaken(0) { m_passengersPtr = new Passenger[ m_seats ]; } Car::Car(string make, string model, int seats) : m_make(make), m_model(model), m_seats(seats), m_seatsTaken(0) { m_passengersPtr = new Passenger[ m_seats ]; } Car::Car(const Car& car) : m_make(car.m_make), m_model(car.m_model), m_seats(car.m_seats), m_seatsTaken(car.m_seatsTaken) { m_passengersPtr = new Passenger[ car.m_seats ]; for (int i = 0; i < m_seatsTaken; i++) m_passengersPtr[i] = car.m_passengersPtr[i]; } void Car::AddPassenger(Passenger passenger) { if (m_seatsTaken < m_seats) m_passengersPtr[ m_seatsTaken++ ] = passenger; else cerr << "The car is already full!" << endl; } Car::~Car() { delete [] m_passengersPtr; } Car& Car::operator =(const Car& car) { if (this != &car) { m_make = car.m_make; m_model = car.m_model; m_seatsTaken = car.m_seatsTaken; if (m_seats != car.m_seats) { delete [] m_passengersPtr; m_passengersPtr = new Passenger[ car.m_seats ]; m_seats = car.m_seats; } for (int i = 0; i < m_seatsTaken; i++) m_passengersPtr[i] = car.m_passengersPtr[i]; } // 'this' is a pointer to the current object return *this; } ostream& operator <<(ostream& sout, const Car car) { sout << car.m_make << " " << car.m_model << endl; for (int i = 0; i < car.m_seatsTaken; i++) sout << car.m_passengersPtr[i] << endl; return sout; }