Shape *shape[100];
Square sqr;
void inputdata() {
int len,width;
cout << "enter length";
cin >> len;
cout << "enter width";
cin >> width;
sqr = Square(len,width,0); //---> i have not compute area for this, i just put a 0 for it first
shape[0] = &sqr;
}
void computeArea() {
int area;
area = shape[0]->computeArea();
//----> need to set my area here after getting it
}
shape 是父类,square 是子类
创建方形对象并将其插入形状数组后。我无法在我的 square 类中使用 setArea() 方法来设置区域。
我已经为此找到了两个解决方案,但觉得它不适合对象继承多态性。
一种方法是在 shape 类中实现 setArea()(我已经在 square 类上设置了 setArea())并通过多态性调用 setArea 方法并将其设置为我的正方形区域属性。
另一种方法是在形状类中创建一个 get 对象方法,即 getSquare(),这样我就可以通过 Shape 数组到达 getArea() 方法
我的两种方法有效吗?或者有更好的方法吗?
class Square: public Shape{
private:
int len;
int width;
int area;
public:
Square(string,int,int,int);
int getArea();
void setArea(int);
};
int Square::computeArea() {
int sqrArea = len*width;
area = setArea(sqrArea);
return sqrArea;
}
int Square::setArea(int _area) {
area = _area;
}