Initilisation of variable in constructor not working but instead giving me a random number

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.

Answers


In the constructor, passNum is declared locally (it hides the private class-level definition).

Change to:

Booking()
{
    /*int*/ passNum = 0; //initialise passenger number to 0
    totalSeats = 24; // total seats on plane
    fName = "empty";
    sName = "empty";
    busName = "empty";
}

The problem is the int in

    int passNum = 0; // initialise passenger number to 0

You are not assigning to the member variable, you are creating a new local variable with the same name.

To fix, remove the int.


Need Your Help

Apple Mac-o-Linker (id) error

iphone objective-c ios xcode linker

I have deleted some .h and .m libraries which were not required in my project and now i am getting this error:

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.