As you probably gathered from the title I’m having an error initialising the variable ‘passNum’ in the constructor of my file ‘booking.h’
The file contains the booking class for a flight reservation program and I’d like to initialise passNum to 0 because initially there are no passengers on the flight. However I keep getting the message “flight is full” which was in place for the user to see whether there was any space left on the flight or not. SO, to see the error I added a cout in order to see what number was actually stored in passNum. The output was ‘28080747’ however the number changes every time I compile and run.
Booking file…
//Booking class - Scotia Airlines
//Zac Mazs
//This class will reserve a seat for passenger
#include <iostream>
#include <string>
#include "flight.h"
using namespace std;
class Booking{
public:
// default constructor
Booking()
{
int passNum = 0; // initialise passenger number to 0
totalSeats = 24; // total seats on plane
fName = "empty";
sName = "empty";
busName = "empty";
}
// accessor methods
void setPassNum(int p){passNum = p;}
string getFname(){return fName;}
string getSname(){return sName;}
string getBusName(){return busName;}
void addBooking()
{
if (passNum >= totalSeats) // if the number of passengers exceeds 24 then display flight-full message
{
cout << passNum;
cout <<"Flight is full";
}
else
{
cout << "\tBooking Menu \n\n";
cout << "Please select ticket type: \n";
cout << "1- Business \n";
cout << "2- Western Isles \n";
cout << "3- Ordinary \n";
cin >> livesAt;
// This will be used to calc total cost for each passenger dependant on ticket type
if(livesAt == 1)
{
discount = 0.75;
cout << "Please enter your business name\n";
cin >> busName;
}
else if (livesAt == 2)
{
discount = 0.90;
}
else if(livesAt == 3)
{
discount = 1.0;
}
else
{
cout << "Error, please choose 1,2 or 3";
}
// Calculation - Standard ticket price is 60 Beans
tickPrice = 60.0;
tCost = (tickPrice * discount);
bool booked = false;
for(int ROW = 0; ROW < 4 && !booked; ROW++)
{
for(int COL = 0; COL < 6 && !booked; COL++)
{
if(f.isAvailable(ROW,COL) == true)
{
cout << "Please enter your first name \n";
cin >> fName;
cout << "Please enter your second name \n";
cin >> sName;
//create new string fullName from fName and sName
fullName == fName + " " + sName;
f.setName(ROW,COL, fullName);
f.setAvailable(ROW,COL,0);
f.seatArray[ROW][COL].available++;
booked = true;
// increment pass num/decrement totalSeats
totalSeats--;
passNum++;
// Message on screen for customer displaying cost of flight
cout << "*******************************\n";
cout << "\tBooking for "; cout << fName + " " + sName; cout << " confirmed.\n";
cout << "\tTotal cost = " << tCost << " GBP.\n";
}//end of if
}//end of for2
}//end of for1
}//end else
}// End of addBooking function
private:
//Declare all variables
string fName, sName, busName, fullName;
int livesAt, totalSeats;
int passNum;
float discount, tickPrice, tCost;
Flight f;
Seat s;
Passenger p;
};// End of addBooking class
Any thoughts? I really appreciate the help!
Thanks in advance.
In the constructor, passNum is declared locally (it hides the private class-level definition).
Change to: