的我已經創建了一個新的類,它通過私有繼承組成std::deque
,即迭代器無法訪問,因爲私有繼承
class B : private std::deque<A>
{ ... };
,在我的源代碼,我試圖用B的迭代器,即
B::iterator it
編譯器錯誤是
error C2247: 'std::deque<_Ty>::iterator' not accessible because 'B' uses 'private' to inherit from 'std::deque<_Ty>'
所以,問題是,我怎麼可以讓ITER ator可訪問?
@TonyTheLion你說什麼並不適用於私有繼承,因爲一個不能綁定了''B''多形性成''的std :: deque''指針或引用。 – juanchopanza
@juanchopanza:同意了,儘管注意到'B'類可以,如果它太愚蠢,那麼'B'的作者需要小心。 B類的用戶不能,至少不是沒有不安全的技巧,他們應該知道比使用更好。我認爲一個C風格的演員可以做到這一點,但是無論標準容器是私人基地,公共基地還是基地,一個C風格的劇組和後面的「刪除」都會中斷! –
@TonyTheLion:「從'繼承'時它們不會被正確銷燬 - 這聽起來像貨物崇拜節目。您的關注僅適用於通過基類指針銷燬派生類的情況。這是私有繼承不可能的。 –