2012-12-17 37 views
0

我有4類,C++使在子類中的一類的成員變量的特殊化

類A(摘要),

B類(摘要),(具有作爲成員變量類型的載體,(類A))

C類,類的子類甲

類d,B類的子類

我可以重新定義d類的成員變量是類型的載體(柯樂s C)而不是矢量(A類)。改爲數組會更好嗎?

+0

因爲C是從A派生出來的,所以你不需要改變向量。在使用它之前,你只需要將其「downcast」到C中。 – Najzero

+0

什麼是你選擇的porpuse?順便說一下,如果* C子類A *,* C *已經是一個* A * .a C對象包含A的每個成員nad方法加上他的成員和方法.. –

回答

0

不,你不能這樣做。它不起作用,因爲以下情況:

如果B類中的函數向類A(但不是C類)的向量中添加元素,則在基類中允許使用此元素,但對於特定的子類(C),因爲類型已更改。

0

我可以重新定義類D的成員變量爲類型向量(類C)而不是向量(類A)。

不,你不能。一旦數據成員在基類中聲明,它將以完全相同的形式被所有派生類繼承。

你可以做的是把基類成員爲指針A,並初始化要麼指向的A一個實例,或C一個實例。

+0

我想,它已經是一個指針或引用,因爲你不能有抽象類的實例。 –

+0

所以我可以有一個指向類A的指針向量,都指向類C? –

相關問題