#include <iostream>using namespace std;class AngularDistance{ protected: int degrees; int seconds; int minutes; public: AngularDistance(); AngularDistance(int,int,int); AngularDistance(const AngularDistance&); friend ostream& operator <<(ostream&, AngularDistance&); AngularDistance& operator =(const AngularDistance&);};AngularDistance.cpp:
#include <iostream>#include "AngularDistance.h"using namespace std;AngularDistance::AngularDistance(){ AngularDistance::degrees = 0; AngularDistance::minutes = 0; AngularDistance::seconds = 0;}AngularDistance::AngularDistance(int deg, int min, int sec){ AngularDistance::degrees = deg; AngularDistance::seconds = sec; AngularDistance::minutes = min;}AngularDistance::AngularDistance(const AngularDistance& src){ AngularDistance::degrees = src.degrees; AngularDistance::minutes = src.minutes; AngularDistance::seconds = src.seconds;}ostream& operator <<(ostream& os, AngularDistance& src){ os << "Degrees: " << src.degrees << endl; os << "Minutes: " << src.minutes << endl; os << "Seconds: " << src.seconds << "\n\n\n"; return os;}AngularDistance& AngularDistance::operator =(const AngularDistance& src){ AngularDistance::degrees = src.degrees; AngularDistance::minutes = src.minutes; AngularDistance::seconds = src.seconds; return *this;}DirectedAngle.h(derived from the previous class)
#include <iostream>#include "AngularDistance.h"using namespace std;class DirectedAngle: public AngularDistance{ private: char direction; public: DirectedAngle(); DirectedAngle(int,int,int,char); DirectedAngle(const DirectedAngle&); int AngleTotal(); friend ostream& operator <<(ostream&, DirectedAngle&); DirectedAngle& operator =(const DirectedAngle&);};DirectedAngle.cpp:
#include <iostream> #include "AngularDistance.h"#include "DirectedAngle.h"using namespace std;DirectedAngle::DirectedAngle(){ DirectedAngle::degrees = 0; DirectedAngle::minutes = 0; DirectedAngle::seconds = 0; DirectedAngle::direction = "";}DirectedAngle::DirectedAngle(int deg, int min, int sec, char dir){ DirectedAngle::degrees = deg; DirectedAngle::minutes = min; DirectedAngle::seconds = sec; DirectedAngle::direction = dir;}DirectedAngle::DirectedAngle(const DirectedAngle& da){ DirectedAngle::degrees = da.degrees; DirectedAngle::seconds = da.seconds; DirectedAngle::minutes = da.minutes; DirectedAngle::direction = da.direction;}int DirectedAngle::AngleTotal(){ return DirectedAngle::degrees + (DirectedAngle::minutes/60) + (DirectedAngle::seconds/3600);}ostream& operator <<(ostream& os, DirectedAngle& src){ os << "Degrees: " << src.degrees << endl; os << "Minutes: " << src.minutes << endl; os << "Seconds: " << src.seconds << endl; os << "Direction: " << src.direction << endl; os << "Total Angle: " << src.AngleTotal() << "\n\n"; return os;}DirectedAngle& DirectedAngle::operator =(const DirectedAngle& src){ DirectedAngle::degrees = src.degrees; DirectedAngle::minutes = src.minutes; DirectedAngle::seconds = src.seconds; DirectedAngle::direction = src.direction; return *this;}GlobalPath.h
#include <iostream> #include "DirectedAngle.h"#include "AngularDistance.h"using namespace std;class GlobalPath{ private: int numLocations; DirectedAngle* longitudes; DirectedAngle* latitudes; public: GlobalPath(); GlobalPath(int, DirectedAngle*, DirectedAngle*); GlobalPath(const GlobalPath&); ~GlobalPath(); void setLongitudes(int, DirectedAngle*); void setLatitudes(int, DirectedAngle*); friend ostream& operator <<(ostream&, GlobalPath&); GlobalPath& operator =(const GlobalPath&);};GlobalPath.cpp:
#include <iostream> #include "DirectedAngle.h"#include "AngularDistance.h"#include "GlobalPath.h"GlobalPath::GlobalPath(){ GlobalPath::numLocations = 0; GlobalPath::longitudes = NULL; GlobalPath::latitudes = NULL;}GlobalPath::GlobalPath(int numLoc, DirectedAngle* lats, DirectedAngle* longs){ GlobalPath::numLocations = numLoc; GlobalPath::setLatitudes(numLoc, lats); GlobalPath::setLongitudes(numLoc, longs);}GlobalPath::GlobalPath(const GlobalPath& src){ GlobalPath::numLocations = src.numLocations; GlobalPath::longitudes = new DirectedAngle()[src.numLocations]; GlobalPath::latitudes = new DirectedAngle()[src.numLocations]; GlobalPath::setLatitudes(src.numLocations, src.latitudes); GlobalPath::setLongitudes(src.numLocations, src.longitudes);}GlobalPath::~GlobalPath(){ delete [] GlobalPath::longitudes; delete [] GlobalPath::latitudes;}void GlobalPath::setLatitudes(int num, DirectedAngle* lats){ delete [] GlobalPath::latitudes; GlobalPath::latitudes = new DirectedAngle()[num]; for(int i = 0; i < num; i++) { GlobalPath::latitudes[i].degrees = lats[i].degrees; GlobalPath::latitudes[i].minutes = lats[i].minutes; GlobalPath::latitudes[i].seconds = lats[i].seconds; GlobalPath::latitudes[i].direction = lats[i].direction; }}void GlobalPath::setLongitudes(int num, DirectedAngle* longs){ delete [] GlobalPath::longitudes; GlobalPath::longitudes = new DirectedAngle()[num]; for(int i = 0; i < num; i++) { GlobalPath::longitudes[i].degrees = longs[i].degrees; GlobalPath::longitudes[i].minutes = longs[i].minutes; GlobalPath::longitudes[i].seconds = longs[i].seconds; GlobalPath::longitudes[i].direction = longs[i].direction; }}ostream& operator <<(ostream& os, GlobalPath& src){ os << "Number of locations: " << src.numLocations << endl; os << "Latitudinal coordinates: " << endl; for(int i = 0; i < src.numLocations; i++) { os << src.latitudes[i]; } os << "\n\n\nLongitudinal coordinates: " << endl; for(int i = 0; i < src.numLocations; i++) { os << src.longitudes[i]; } return os;}The "Base class undefined error" is coming from line 6 of directedangle.h. Class type refinition is coming from the same line. Any thoughts?
Edit: sorry I don't why the code boxes are so small...
Edited by pyke, 11 December 2009 - 10:19 PM.