我有一个基类Shape
和其他派生类Circle
,Square
以及Triangle
. 我创建了三个基类指针的向量。
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
任何帮助表示赞赏