Hello im trying to compile my project in Xcode but it gives me 117 compile errors. When i have tried the code in other compilers it has compiled just fine. I create a project by going to New Project->Command Line Utility -> C++
45 of the errors are with the Time.cpp file
72 of the errors are with the Date.cpp file
Appointment.h
Appointment.cpp
Time.h
Time.cpp
Date.h
Time.cpp
Appointmentproject.cpp // This file is the test file
45 of the errors are with the Time.cpp file
72 of the errors are with the Date.cpp file
Appointment.h
Code:
#ifndef APPOINTMENT_H_
#define APPOINTMENT_H_
#include <iostream>
#include "Date.h"
#include "Time.h"
#include <string>
using namespace std;
class Appointment : public Date, public Time
{
public:
Appointment();
Appointment(int,int,int,int,int,int,string);//(month,day,year,hour,minute,second,Description
~Appointment();
string getDescription();
void printAppointment();
void setDescription(string);
friend ostream& operator << (ostream&, Appointment&);
friend istream& operator >> (istream&, Appointment&);
private:
string desc;
};
#endif /*APPOINTMENT_H_*/
Appointment.cpp
Code:
#include "Appointment.h"
#include <iomanip>
#include <iostream>
#include <string>
#include "Time.h"
#include "Date.h"
using namespace std;
Appointment::Appointment(int month, int day, int year,int hour,int min,int sec,string des):Date(month,day,year), Time(hour,min,sec){
desc = des;
}
Appointment::Appointment(){
}
Appointment::~Appointment(){}
void Appointment :: setDescription(string s){
desc = s;
}
string Appointment:: getDescription(){
return desc;
}
void Appointment :: printAppointment(){
Date::printDate();
cout << endl;
Time::printTime();
cout << endl<< desc << endl;
}
ostream& operator << (ostream &out, Appointment &a){//
//cerr << "inside Appointment"<< endl;
// Date::operator<<endl;
//out << a.Time::printTime() <<endl;
out << a.getMonth() << "/" <<a.getDay()<<"/"<<a.getYear() << endl;
out << a.getTempHour()<<":" << a.getMinute()<<":" << a.getSecond() << " "<<a.getAmPm()<<endl;
out << a.desc << endl;
return out;
}
istream& operator >> (istream &in, Appointment &a){
int num;
string app;
in >> num;
a.setMonth(num);
in.ignore(); //ignores /
in >> num;
a.setDay(num);
in.ignore(); // ignores /
in >> num;
a.setYear(num);
in.ignore(); // ignores space
in>>num;
a.setHour(num);
in.ignore();//ignores :
in >> num;
a.setMinute(num);
in.ignore(); // ignores :
in >> num;
a.setSecond(num);
in.ignore(); //// ignores space
getline(cin,app);
a.setDescription(app);
return in;
}
Time.h
Code:
#ifndef TIME_H_
#define TIME_H_
#include <string>
#include <iostream>
using namespace std;
//a time consists of hour, minute, second
//and AM/PM
//military time (24hour)
//normal/regular (12 hour)
//hour can have the value 0-23
//minute can have value 0-59
//second can have value 0-59
class Time {
private:
int hour;
int tempHour;
int minute;
int second;
string amPm;
public:
friend ostream& operator<<(ostream&, const Time &);
friend istream& operator>>(istream&, Time &);
void printTime();//normal 12 hour
void printMilitary();//24 hour
void tick();//increments seconds by 1
int getHour();
int getMinute();
int getSecond();
void setHour(int);
void setMinute(int);
void setSecond(int);
Time(int, int, int); //constructor
Time();
string getAmPm();
void setAmPm(string);
int getTempHour();
void setTempHour(int);
//this constructor takes 3 pieces of information
virtual ~Time();//deconstructor
};
#endif /*TIME_H_*/
Time.cpp
Code:
#include "Time.h"
#include <iostream>
#include <iomanip>
using namespace std;
//constructor takes hour (h), minute (m),
//and second (s) and uses that to initialize
//the private data members
Time::Time(int h, int m, int s)
{
//we really should check that h, m, and s
//are valid, how would we do that?
setHour(h);
setMinute(m);
setSecond(s);
}
Time::~Time()
{
}
//tick function/method
void Time::tick(){
//need to increment seconds by 1
second++;
//did I go over 59?
if (second > 59) {
minute++;
second=0;
//did minutes go over 59, if so add to hour
if (minute > 59) {
hour++;
minute=0;
//did hour go over 23, if so reset to 0
if(hour > 23){
hour=0;
}
}
}
}//end tick method
//printTime method
void Time::printTime(){
//prints the time in 12 hour format
//hh:mm:ss
//hour doesn't print right, we need a temporary
//hour variable to print 1PM-11PM correctly
//this statement does the same thing as the
//following if/else statement
//you can look it up
// int temphour = (hour>12) ? hour-12 : hour;
int temphour;
if(hour > 12)
temphour = hour-12;//gives us the right
//hour number 13 = 1, 14 = 2, etc.
else
temphour = hour;
//the setfill function fills empty space with
//the specified character, in this case zero
cout << setfill('0') << setw(2)
<< temphour << ":";
cout << setw(2) << minute << ":"
<< setw(2) << second;
//how about the AM/PM?
if (hour < 12) //0-11
cout << " AM";
else
cout << " PM";
}
void Time::printMilitary(){
//prints the time in 12 hour format
//hh:mm:ss
//hour doesn't print right, we need a temporary
//hour variable to print 1PM-11PM correctly
//this statement does the same thing as the
//following if/else statement
//you can look it up
//the setfill function fills empty space with
//the specified character, in this case zero
cout << setfill('0') << setw(2)
<< hour << ":";
cout << setw(2) << minute << ":"
<< setw(2) << second;
}
int Time::getHour() {
return hour;
}
int Time::getMinute() {
return minute;
}
int Time::getSecond() {
return second;
}
void Time::setHour(int h) {
hour = (h >= 0 && h<24)? h : 0;
}
void Time::setMinute(int m) {
minute = (m >=0 && m < 60) ? m : 0;
}
void Time::setSecond(int s) {
second = (s >= 0 && s < 60) ? s : 0;
}
ostream& operator<<(ostream &out, const Time &t) {
out << setw(2) << setfill('0');
out << t.hour << ":"
<< setw(2) << t.minute << ":"
<< setw(2) << t.second;
return out;
}//end overloaded stream insertion operator
istream& operator>>(istream &in, Time &t) {
in>>t.hour;
in.ignore();//ignore ':'
in>>t.minute;
in.ignore();//ignore ':'
in>>t.second;
return in;
}
Time::Time(){}
string Time::getAmPm(){
if (hour >11){
amPm = "PM";
}else{
amPm = "AM";}
return amPm;
}
void Time::setAmPm(string timeofday){
amPm = timeofday;
}
int Time ::getTempHour(){
tempHour =hour;
if(hour > 12){
tempHour = hour -12;
return tempHour;
}else{
return tempHour;
}
}
void Time::setTempHour(int h){
tempHour = h;
}
Date.h
Code:
#ifndef DATE_H
#define DATE_H
#include <iostream>
using std::ostream;
using std::istream;
class Date {
public:
friend ostream& operator<<(ostream&,const Date&);
friend istream& operator>>(istream&,Date&);
Date();
Date(int m);
Date(int m, int d);
Date(int m, int d, int y);
void printDate();
void setMonth(int m);
void setDay(int d);
void setYear(int y);
int getMonth();
int getDay();
int getYear();
virtual ~Date();
private:
int month;
int day;
int year;
};//end date class
#endif
Time.cpp
Code:
#include "Time.h"
#include <iostream>
#include <iomanip>
using namespace std;
//constructor takes hour (h), minute (m),
//and second (s) and uses that to initialize
//the private data members
Time::Time(int h, int m, int s)
{
//we really should check that h, m, and s
//are valid, how would we do that?
setHour(h);
setMinute(m);
setSecond(s);
}
Time::~Time()
{
}
//tick function/method
void Time::tick(){
//need to increment seconds by 1
second++;
//did I go over 59?
if (second > 59) {
minute++;
second=0;
//did minutes go over 59, if so add to hour
if (minute > 59) {
hour++;
minute=0;
//did hour go over 23, if so reset to 0
if(hour > 23){
hour=0;
}
}
}
}//end tick method
//printTime method
void Time::printTime(){
//prints the time in 12 hour format
//hh:mm:ss
//hour doesn't print right, we need a temporary
//hour variable to print 1PM-11PM correctly
//this statement does the same thing as the
//following if/else statement
//you can look it up
// int temphour = (hour>12) ? hour-12 : hour;
int temphour;
if(hour > 12)
temphour = hour-12;//gives us the right
//hour number 13 = 1, 14 = 2, etc.
else
temphour = hour;
//the setfill function fills empty space with
//the specified character, in this case zero
cout << setfill('0') << setw(2)
<< temphour << ":";
cout << setw(2) << minute << ":"
<< setw(2) << second;
//how about the AM/PM?
if (hour < 12) //0-11
cout << " AM";
else
cout << " PM";
}
void Time::printMilitary(){
//prints the time in 12 hour format
//hh:mm:ss
//hour doesn't print right, we need a temporary
//hour variable to print 1PM-11PM correctly
//this statement does the same thing as the
//following if/else statement
//you can look it up
//the setfill function fills empty space with
//the specified character, in this case zero
cout << setfill('0') << setw(2)
<< hour << ":";
cout << setw(2) << minute << ":"
<< setw(2) << second;
}
int Time::getHour() {
return hour;
}
int Time::getMinute() {
return minute;
}
int Time::getSecond() {
return second;
}
void Time::setHour(int h) {
hour = (h >= 0 && h<24)? h : 0;
}
void Time::setMinute(int m) {
minute = (m >=0 && m < 60) ? m : 0;
}
void Time::setSecond(int s) {
second = (s >= 0 && s < 60) ? s : 0;
}
ostream& operator<<(ostream &out, const Time &t) {
out << setw(2) << setfill('0');
out << t.hour << ":"
<< setw(2) << t.minute << ":"
<< setw(2) << t.second;
return out;
}//end overloaded stream insertion operator
istream& operator>>(istream &in, Time &t) {
in>>t.hour;
in.ignore();//ignore ':'
in>>t.minute;
in.ignore();//ignore ':'
in>>t.second;
return in;
}
Time::Time(){}
string Time::getAmPm(){
if (hour >11){
amPm = "PM";
}else{
amPm = "AM";}
return amPm;
}
void Time::setAmPm(string timeofday){
amPm = timeofday;
}
int Time ::getTempHour(){
tempHour =hour;
if(hour > 12){
tempHour = hour -12;
return tempHour;
}else{
return tempHour;
}
}
void Time::setTempHour(int h){
tempHour = h;
}
Appointmentproject.cpp // This file is the test file
Code:
#include "Time.h"
#include "Date.h"
#include "Appointment.h"
#include <iostream>
#include <string>
using namespace std;
int main(){
Appointment test;
cin >> test;
cout << test;
return 0;
}