0
我正在爲我的C++類寫一個Ticket Simulator程序。我在名爲Parking Ticket
的課程中有一個名爲PoliceOfficer
的課程。當我在源中顯示officer.print()
函數時,它顯示用戶提供的正確信息。但是,當我在ParkingTicket類中使用officer.print()
函數時,它不顯示任何內容,即默認的構造函數。希望這是有道理的。這裏是我的代碼:聚合類顯示默認構造函數
class PoliceOfficer
{
private:
ParkedCar car;
ParkingMeter time;
std::string name;
int badgeNumber;
public:
PoliceOfficer()
{
name = "";
badgeNumber = 0;
}
PoliceOfficer(std::string i,int j)
{
name = i;
badgeNumber = j;
}
void set(std::string i, int j)
{
name = i;
badgeNumber = j;
}
std::string get_name() const
{
return name;
}
int get_badgeNum() const
{
return badgeNumber;
}
void print() const
{
std::cout << "Police Officer Information: " << std::endl;
std::cout << "Name: " << get_name() << std::endl;
std::cout << "Badge Number: " << get_badgeNum() << std::endl;
}
};
停車票類:
class ParkingTicket
{
private:
ParkedCar car;
PoliceOfficer officer;
ParkingMeter time;
double fine;
int hours;
public:
double baseFine = 25.0, hourlyFine = 10.0;
ParkingTicket(int i = 0, int j = 0)
{
fine = i;
hours = j;
}
void set_fine()
{
hours = (time.get_MinutesPurch() - car.get_minutesParked())/60;
fine += baseFine;
fine += hours *hourlyFine;
}
void ticket_print() const
{
officer.print();
}
void print()
{
std::cout << "Ticket Information: " << std::endl;
std::cout << "Minutes in Violation: " << (car.get_minutesParked() - time.get_MinutesPurch()) << std::endl;
std::cout << "Fine: $" << fine << std::endl;
}
};
源:
int main()
{
string oname;
int bnum;
PoliceOfficer officer;
ParkingTicket ticket;
cout << "Enter your name: ";
getline(cin, oname);
cout << "Enter your badge number: ";
cin >> bnum;
officer.set(oname, bnum);
officer.print();
ticket.ticket_print();
return 0;
}
你在哪裏設置'ParkingTicket'裏面'PoliceOfficer'的信息? –
我不?我一定要嗎?我認爲它只會從警察類 – Thao
@Thao'ParkingTicket'中設置信息,似乎需要對「PoliceOfficer」類實例進行初始化引用。 –