我有一个基类Shape
和其它派生类Circle
,Square
和Triangle
。我创建了三个基类指针的向量。排序对象的输入阵列中的C++
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
。
任何帮助理解
这是很酷,但请注意,它需要一个现代的编译器。 – Kos 2012-07-23 09:48:36
这将是很好的陈述,使用lambda函数只支持C++ 11。 – betabandido 2012-07-23 09:48:55