那里出错了呢?
#include <iostream>using namespace std;class Point{public: Point(float x=0,float y=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &);protected: float x,y; };Point::Point(float a,float b) {x=a;y=b;}void Point::setPoint(float a,float b) {x=a;y=b;}ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output;} int main(){Point p(3.5,6.4);cout<<"x="<<p.getX()<<",y="<<p.getY()<<endl;p.setPoint(8.5,6.8);cout<<"p(new):"<<p<<endl;system("pause");} class Circle:public Point{public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area() const; friend ostream &operator<<(ostream &,const Circle &);private: float radius; };Circle::Circle(float a,float b,float r):Point(a,b),radius(r) {}void Circle::setRadius(float r) {radius=r;}float getRadius() const {return radius;}float area() const {return 3.1415926*radius*radius;}ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<".area="<<c.area()<<endl; return output; }int main(){Circle c(3.5,6.4,5.2);cout<<"original circle:\\nx="<<c.getX()<<",y="<<c.getY()<<",r="<<c.getRadius()<<",area="<<c.area()<<endl;c.setRadius(7.5);c.setPoint(5,5);cout<<"new circle:\\n"<<c;Point &pRef=c;cout<<"pRef:"<<pRef;return 0;}
#include <iostream>using namespace std;class Point{public: Point(float x=0,float y=0); void setPoint(float,float); float getX() const {return x;} float getY() const {return y;} friend ostream & operator<<(ostream &,const Point &);protected: float x,y; };Point::Point(float a,float b)//最好与定义类的参数一致 {x=a;y=b;}void Point::setPoint(float a,float b) {x=a;y=b;}ostream & operator<<(ostream &output,const Point &p) {output<<"["<<p.x<<","<<p.y<<"]"<<endl; return output;}class Circle:public Point{public: Circle(float x=0,float y=0,float r=0); void setRadius(float); float getRadius() const; float area() const; friend ostream &operator<<(ostream &,const Circle &);private: float radius;};Circle::Circle(float a,float b,float r):Point(a,b),radius(r) {}void Circle::setRadius(float r) { radius=r;}float Circle::getRadius() const //这里写掉了Circle::,它是成员函数{ return radius;}float Circle::area() const//同理 {return 3.1415926*radius*radius;}ostream &operator<<(ostream &output,const Circle &c) {output<<"Center=["<<c.x<<","<<c.y<<"],r="<<c.radius<<".area="<<c.area()<<endl; return output; }int main(){Circle c(3.5,6.4,5.2);cout<<"original circle:\\nx="<<c.getX()<<",y="<<c.getY()<<",r="<<c.getRadius()<<",area="<<c.area()<<endl;c.setRadius(7.5);c.setPoint(5,5);cout<<"new circle:\\n"<<c;Point &pRef=c;cout<<"pRef:"<<pRef;return 0;}//还有一个地方是,你的程序中出现了2个main函数,你要去掉一个。
[解决办法]
2个main函数
[解决办法]
2个main函数;
另外发现即使去掉一个main函数,在VC6.0下还是会报错,友元问题。