请问在多个派生类中定义头文件的有关问题
请教在多个派生类中定义头文件的问题
/////////////////Point.h///////////
//#include <iostream.h>
class Point
{
public:
Point(float, float);
void setPoint(float, float);
float getX();
float getY();
friend ostream & operator<<(ostream &, Point &);
private:
float x;
float y;
};
////////////////////////////////////
////////////////Circle.h////////////
//#include "Point.h"
//#include <iostream.h>
class Circle: public Point
{
public:
Circle(float, float, float);
void setRadius(float);
float getRadius();
float area();
friend ostream &operator<<(ostream &, Circle &);
private:
float radius;
};
//////////////////////////////////////
////////////////Cylinder.h////////////
//include "Circle.h"
//#include <iostream.h>
class Cylinder:public Circle
{
public:
Cylinder(float,float,float,float);
void setHigh(float);
float getHigh();
float area();
float volume();
friend ostream &operator<<(ostream &, Cylinder &);
private:
float high;
};
///////////////////////////////////////
//////////////Point.cpp////////////////
//#include "Point.h"
//#include <iostream.h>
Point::Point(float a, float b):x(a),y(b){}
void Point::setPoint(float a, float b)
{
x=a; y=b;
}
float Point::getX() { return x; }
float Point::getY() { return y; }
ostream &operator<<(ostream &output, Point &p)
{
output<<"["<<p.getX()<<","<<p.getY()<<"]";
return output;
}
///////////////////////////////////////
//////////////////Circle.cpp/////////////////////
//#include "Circle.h"
//#include <iostream.h>
Circle::Circle(float a, float b, float r):Point(a,b),radius(r){}
void Circle::setRadius(float r) { radius=r; }
float Circle::getRadius() { return radius; }
float Circle::area() { return 3.14*radius*radius; }
ostream &operator<<(ostream &output, Circle &c)
{
output<<"["<<c.getX()<<","<<c.getY()<<"], "<<"r="<<c.getRadius()
<<", area="<<c.area();
return output;
}
////////////////////////////////////////////////////
/////////////////////Cylinder.cpp////////////////////
//#include "Cylinder.h"
//#include <iostream.h>
Cylinder::Cylinder(float a, float b, float r, float h):Circle(a,b,r), high(h){}
void Cylinder::setHigh(float h) { high=h; }
float Cylinder::getHigh() { return high; }
float Cylinder::area()
{
return 2*Circle::area()+3.14*2*Circle::getRadius()*high;
}
float Cylinder::volume()
{
return Circle::area()*high;
}
ostream &operator<<(ostream &output, Cylinder &cy)
{
output<<"["<<cy.getX()<<","<<cy.getY()<<"], "<<"r="<<cy.getRadius()
<<", area="<<cy.area()<<", volume="<<cy.volume();
return output;
}
/////////////////////////////////////////////////////
////////////////main.cpp////////////////////////
#include "Point.h"
#include "Circle.h"
#include "Cylinder.h"
#include <iostream.h>
int main()
{
Point p(1.2, 2.3);
cout<<p<<endl;
Circle c(3.4,4.5,5.6);
cout<<c<<endl;
/////////////////Point.h///////////
//#include <iostream.h>
class Point
{
public:
Point(float, float);
void setPoint(float, float);
float getX();
float getY();
friend ostream & operator<<(ostream &, Point &);
private:
float x;
float y;
};
////////////////////////////////////
////////////////Circle.h////////////
//#include "Point.h"
//#include <iostream.h>
class Circle: public Point
{
public:
Circle(float, float, float);
void setRadius(float);
float getRadius();
float area();
friend ostream &operator<<(ostream &, Circle &);
private:
float radius;
};
//////////////////////////////////////
////////////////Cylinder.h////////////
//include "Circle.h"
//#include <iostream.h>
class Cylinder:public Circle
{
public:
Cylinder(float,float,float,float);
void setHigh(float);
float getHigh();
float area();
float volume();
friend ostream &operator<<(ostream &, Cylinder &);
private:
float high;
};
///////////////////////////////////////
//////////////Point.cpp////////////////
//#include "Point.h"
//#include <iostream.h>
Point::Point(float a, float b):x(a),y(b){}
void Point::setPoint(float a, float b)
{
x=a; y=b;
}
float Point::getX() { return x; }
float Point::getY() { return y; }
ostream &operator<<(ostream &output, Point &p)
{
output<<"["<<p.getX()<<","<<p.getY()<<"]";
return output;
}
///////////////////////////////////////
//////////////////Circle.cpp/////////////////////
//#include "Circle.h"
//#include <iostream.h>
Circle::Circle(float a, float b, float r):Point(a,b),radius(r){}
void Circle::setRadius(float r) { radius=r; }
float Circle::getRadius() { return radius; }
float Circle::area() { return 3.14*radius*radius; }
ostream &operator<<(ostream &output, Circle &c)
{
output<<"["<<c.getX()<<","<<c.getY()<<"], "<<"r="<<c.getRadius()
<<", area="<<c.area();
return output;
}
////////////////////////////////////////////////////
/////////////////////Cylinder.cpp////////////////////
//#include "Cylinder.h"
//#include <iostream.h>
Cylinder::Cylinder(float a, float b, float r, float h):Circle(a,b,r), high(h){}
void Cylinder::setHigh(float h) { high=h; }
float Cylinder::getHigh() { return high; }
float Cylinder::area()
{
return 2*Circle::area()+3.14*2*Circle::getRadius()*high;
}
float Cylinder::volume()
{
return Circle::area()*high;
}
ostream &operator<<(ostream &output, Cylinder &cy)
{
output<<"["<<cy.getX()<<","<<cy.getY()<<"], "<<"r="<<cy.getRadius()
<<", area="<<cy.area()<<", volume="<<cy.volume();
return output;
}
/////////////////////////////////////////////////////
////////////////main.cpp////////////////////////
#include "Point.h"
#include "Circle.h"
#include "Cylinder.h"
#include <iostream.h>
int main()
{
Point p(1.2, 2.3);
cout<<p<<endl;
Circle c(3.4,4.5,5.6);
cout<<c<<endl;