我有一個基類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