这是使用 Time 类的类,也是“魔术”发生的地方。数据是从文本文件中取出的
while(i<flightsNumber){
if(ist>>nameArr>>arr>>airline>>fare>>time){
Flight flight(dep,arr,nameArr,airline,fare,time);
flightVector.push_back(flight);
//pre-check
cout<<flight.getTime()<<endl;
}
else
error("Error: programData.dat contains invalid data");
//post-check
cout<<flightVector[i].getTime()<<endl;
i++;
}
这是我的 MyTime 课程
#include "MyTime.h"
MyTime::MyTime()
:h(0),m(0){
}
MyTime::MyTime(int hh,int mm)
:h(hh),m(mm){
if(hh<0 || mm<0 || mm>59)
error("Time(): invalid construction");
}
void MyTime::setTime(int hh,int mm){
if(hh<0 || mm<0 || mm>59)
error("setTime(): invalid time");
h=hh;
m=mm;
}
int MyTime::getHour() const{
return h;
}
int MyTime::getMinute() const{
return m;
}
istream& operator>>(istream& is,MyTime& time){
char ch1;
int hour,minute;
is>>hour>>ch1>>minute;
if(is){
if(ch1==':'){
time.h = hour;
time.m = minute;
}
else
is.setstate(ios_base::failbit);
}
else
is.setstate(ios_base::failbit);
return is;
}
ostream& operator<<(ostream& os,const MyTime& time){
return os<<time.h<<":"<<time.m;
}
输出是:
1:12
-33686019:-1414812757
这怎么可能?
在执行 push_back() 函数后,MyTime 实例的值会立即更改。