0
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;
}
4

3 に答える 3