2013-11-03 15 views
0

我使用繼承來計算3周的形狀的區域:正方形,矩形和交叉C++我怎樣不同的形狀存儲與不同的座標到載體

如此以來正方形和矩形都具有4組座標的的x,y交叉而具有12組x,Y ..

我的形狀包括 - 形狀名稱 - 區域 - 所有座標

我一共4班 1)的shape2d 2 )方形 3)矩形 4)交叉

所以有實際上將其存儲在一個矢量的方法嗎?

+0

你確定你想要廣場,並在兩個不同的類? –

+0

要利用多​​態性,您需要存儲指向對象的指針或引用。在向量中存儲'std :: shared_ptr '。 – StoryTeller

+1

您可以存儲一個指針(原始'shape2d *'或最好是某種智能指針,如'shared_ptr ')。您還將所有特定於類型的計算放到虛擬函數中,並且不要使用強制轉換。 –

回答

5

由於向量存儲實際對象的副本,你將需要建立一個向量型形狀的指針。 這種方式向量存儲指針的副本,根本沒有問題。

然而,這意味着你將要管理這些形狀的內存(當刪除指針)。

您可以通過確保指針的「所有者」刪除它們時,他從載體中刪除他們做到這一點。 或者使用unique_ptr或shared_ptr爲您管理內存。

相關問題