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 がサブクラス
正方形のオブジェクトを作成した後、それを形状配列に挿入します。面積を設定するために、正方形クラスの setArea() メソッドに到達できませんでした。
私はすでにこれに対して2つの解決策を見つけましたが、オブジェクト継承ポリモーフィズムには適していないと感じています。
1つの方法は、形状クラスにsetArea()を実装し(すでに正方形クラスにsetArea()があります)、ポリモーフィズムを介してsetAreaメソッドを呼び出し、それを正方形領域属性に設定することです。
もう 1 つの方法は、getSquare() である shape クラスに get object メソッドを作成して、Shape 配列を介して getArea() メソッドに到達できるようにすることです。
私の2つの方法は有効ですか?またはそれを行うより良い方法はありますか?
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;
}