Zac*_*azs 2 c++ random constructor initialization
正如您可能从标题中收集的那样,我在我的文件'booking.h'的构造函数中初始化变量'passNum'时出错了
该文件包含航班预订计划的预订等级,我想将passNum初始化为0,因为最初航班上没有乘客.然而,我一直收到"航班已满"的消息,该消息已经到位,供用户查看是否有任何空间留在航班上.那么,为了看到错误,我添加了一个cout,以便查看实际存储在passNum中的数字.输出是'28080747'但是每次编译和运行时数字都会改变.
预订文件......
//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
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?我非常感谢你的帮助!
提前致谢.
在构造函数中,passNum在本地声明(它隐藏了私有类级别的定义).
改成:
Booking()
{
/*int*/ passNum = 0; //initialise passenger number to 0
totalSeats = 24; // total seats on plane
fName = "empty";
sName = "empty";
busName = "empty";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |