编译通过,链接报错!求解答!
代码如下所示:
#include<iostream>
using namespace std;
class Shape
{
public:
float area();//面积
float per();//周长
void show();
};
class Circle:virtual public Shape
{
float x,y,r;
public:
Circle(float xx,float yy,float rr)
{
x=xx;y=yy;r=rr;
}
float area()
{
return 3.14159*r*r;
}
float per()
{
return 2*3.14159*r;
}
void show()
{
cout<<"cir.area="<<area()<<",cir.per="<<per()<<endl;
}
};
class rectangle:virtual public Shape
{
float x,y,length,width;
public:
rectangle(float xx,float yy,float l,float w)
{
x=xx;y=yy;
length=l;
width=w;
}
float area()
{
return length*width;
}
float per()
{
return 2*(length+width);
}
void show()
{
cout<<"rec.area="<<area()<<",rec.per="<<per()<<endl;
}
};
void main()
{
Circle cir(2,3,5);
rectangle rec(2,3,4,5);
cout<<"cir.area="<<cir.area()<<endl<<"rec.area="<<rec.area()<<endl;
Shape *a[10];
a[0]=new Circle(2,3,5);
a[1]=new rectangle(2,3,4,5);
for(int i=0;i<2;i++)
{
a[i]->show();
}
}