Quantcast

Jump to content


Photo

C++ inheritance


  • Please log in to reply
No replies to this topic

#1 Melchoire

Melchoire
  • 5284 posts


Users Awards

Posted 07 December 2009 - 08:30 PM

I am practising inheritance for my computer science class but I'm getting a lot of errors and I have a feeling it's one of those errors where just one small change gets rid of all of them. So anyways I'm just going to post all my files and I'd appreciate any help at all.AngularDistance.h
#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.



1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users