基本クラスShape
、および他の派生クラス、、Circle
およびがSquare
ありTriangle
ます。3つの基本クラスポインタのベクトルを作成しました。
vector < Shape * > shapes( 3 );
shapes[ 0 ] = &C1; //Circle C1;
shapes[ 1 ] = &S1; //Square S1;
shapes[ 2 ] = &T1; //Triangle T1;
その後、仮想関数を呼び出すloop
ためにを使用しましたvirtualViaPointer()
draw()
for (size_t i = 0; i < shapes.size(); ++i) {
cout << endl;
virtualViaPointer( shapes[ i ] );
}
void virtualViaPointer(const Shape * const baseClassPtr)
{
baseClassPtr->draw();
}
各派生クラスには、getArea()
各形状の面積を計算して結果を返す関数があります。
vector
ここで、上記を使用して関数を呼び出して、領域を並べ替えたいと思いgetArea()
ます。どうやってやるの?たとえば、私の並べ替え関数は次のようになりますsortShape(Array, numShape)
。ここで、は作成された形状を指すポインタArray
の配列です。Shape
どんな助けでも大歓迎です