I'm trying to have a pointer point to teh first object in a Queue of Objects so I can move it to a Map but I'm getting odd errors. Car and Date are classes I've created, but Date has nothing to do with Car assignments so I don't understand the error codes.
Date.h
Car.hCode:#include"date.h" typedef enum {NA, available, service, rented, junked} status; class Car { private: string plate; status stat; int mileage; int lastServiceMileage; Date outDate;/*date rented*/ Date inDate;/*date due back*/ public: Car(string lic="", unsigned miles=0) { plate=lic; mileage=miles; stat=NA; } string getPlate() { return plate; } int getMile() { return mileage; } bool operator==(const Car &car2) { return(plate==car2.plate); } bool operator<(const Car &car2)const { return(plate<car2.plate); } int mileageCompareTo(const Car &car2)const { return(mileage-car2.mileage); } string convertStatus()const { /*NA, available, service, rented, junked*/ switch(stat) { case NA: return "NA"; break; case available: return "available"; break; case service: return "service"; break; case rented: return "rented"; break; case junked: return "junked"; break; default: return "NA"; break; } } void chStat(string sta) { if(sta=="NA") stat=NA; if(sta=="available") stat=available; if(sta=="service") stat=service; if(sta=="rented") stat=rented; if(sta=="junked") stat=junked; } };
Main.cppCode:#if !defined Date_h #define Date_h #include <iostream> #include <string> using std::string; using std::cout; using std::cin; using std::ostream; using std::istream; class DateException{ //Note really should write display member function and insertion operator helper function public: string message; DateException(const string & msg = ""){message = msg;} }; class Date { //does note need copy constructor or assignment operator WHY? public : Date(int month = 1, int day =1, int year = 2001); void setDate(int month = 1, int day =1, int year = 2000) throw (DateException); void setDay(int day)throw (DateException); void setMonth(int month)throw (DateException); void setYear(int year)throw (DateException); Date operator ++(int) ; //Notice new operation int day()const {return _day;} int year()const {return _year; } int month()const {return _month; } void display(ostream & out = cout)const; // month/day/year format no \n void input(istream & in = cin); // month/day/year format bool operator == ( const Date & d2)const; bool operator < ( const Date & d2)const ; bool operator > (const Date & d2) const ; protected: int _month; int _day; int _year; } ; //helper functions bool operator != (const Date & d1, const Date & d2) ; ostream & operator << (ostream & out, const Date & d1) ; istream & operator >> (istream & in, Date & d1) ; // tests if year is a leap year bool leapYearTest(int year) ; // a crutial piece of information -- the number of days in a month // returns int value int maxNumDaysinMonth(int the_month, int the_year); //compute the difference in days between two dates //Be sure to check which is smaller -- d1 or d2 int difference(const Date &d1, const Date &d2); // checks if a date is a valid one. bool isValid (Date d); #endif // !defined Date_h
Code:#include"car.h" #include<map> /**/ #include<queue> /*cars being serviced*/ void list(); int main() { string command; int day,month,year,mileage; string lic; //Date current; std::map<string,Car*> ourCars; std::multimap<string,Car*> available4Rent; std::queue<Car*> toBeServiced; Car * ca; while(command!="quit") { list(); cout<<"Please enter command: "; cin>>command; if(command=="setdate") { cin>>day>>month>>year; //current.setDate(month, day, year); } if(command=="new") { cin>>lic>>mileage; ca=new Car(lic,mileage); ourCars.insert(std::pair<string,Car*>(lic,ca)); (*ca).chStat("service"); toBeServiced.push(ca); } if(command=="serviced") { ca=toBeServiced.front(); (*ca).chStat("available"); available4Rent.insert(std::pair<string,Car*>((*ca).getPlate(), ca)); toBeServiced.pop(); } } return 0; } void list() { cout<<"setdate mm dd yyyy \n"; cout<<"new 'license plate' 'mileage' \n"; cout<<"serviced \n"; cout<<"list\n"; cout<<"available\n"; cout<<"rent mm/dd/yy\n"; cout<<"return 'license plate' 'current mileage'\n"; cout<<"rented\n"; cout<<"due\n"; cout<<"when 'license plate'\n"; cout<<"overdue\n"; cout<<"rentcar 'license plate' 'date of return'\n"; cout<<"junk 'license plate'\n"; cout<<"listjunked\n"; cout<<"summary 'license plate'\n"; cout<<"quit\n"; }
Errors:
H:\Program>gpp -Wall rent.cpp
c:/djgpp/tmp/ccDXn05B.o(.text+0xcc):rent.cpp: undefined reference to `Date:ate
[in-charge](int, int, int)'
c:/djgpp/tmp/ccDXn05B.o(.text+0x24e):rent.cpp: undefined reference to `Date::set
Date(int, int, int)'
c:/djgpp/tmp/ccDXn05B.o(.gnu.linkonce.t._ZN3CarC1ESsj+0x26):ren t.cpp: undefined
reference to `Date:ate[in-charge](int, int, int)'
c:/djgpp/tmp/ccDXn05B.o(.gnu.linkonce.t._ZN3CarC1ESsj+0x3e):ren t.cpp: undefined
reference to `Date:ate[in-charge](int, int, int)'
collect2: ld returned 1 exit status



LinkBack URL
About LinkBacks
ate


