为什么会有这种报错啊?
我如果想定义一个通用函数void fun(Shape *pt),
输出各自图形的周长和面积,该怎么写呢,求帮助
#include<iostream>
using namespace std;
class shape {
public:
virtual double perimeter();
virtual double area();
virtual void display();
};
class circle:public shape {
private:
double r;
public:
circle(double R=0):r(R) {
}
double perimeter() {
return 2*3.14*r;
}
double area() {
return 3.14*r*r;
}
void display() {
cout<<"圆形"<<endl;
}
};
class rectangle:public shape {
private:
double a;
double b;
public:
rectangle(double x=0,double y=0):a(x), b(y) {
}
double perimeter() {
return 2*(a+b);
}
double area() {
return a*b;
}
void display() {
cout<<"方形"<<endl;
}
};
int main() {
shape *p;
p=new circle(3);
p->display();
p=new rectangle(2,4);
p->display();
system("PAUSE");
return 0;
}
#include<iostream>
using namespace std;
class shape {
public:
virtual double perimeter() { return 0.0; }
virtual double area() { return 0.0; }
virtual void display() {}
};
class circle :public shape {
private:
double r;
public:
circle(double R = 0) :r(R) {
}
double perimeter() {
return 2 * 3.14 * r;
}
double area() {
return 3.14 * r * r;
}
void display() {
cout << "圆形" << endl;
}
};
class rectangle :public shape {
private:
double a;
double b;
public:
rectangle(double x = 0, double y = 0) :a(x), b(y) {
}
double perimeter() {
return 2 * (a + b);
}
double area() {
return a * b;
}
void display() {
cout << "方形" << endl;
}
};
int main() {
shape* p;
p = new circle(3);
p->display();
p = new rectangle(2, 4);
p->display();
system("PAUSE");
return 0;
}
不是通用 是父类shape 定义一个抽象方法 子类继承并实现具体方法