我正在嘗試使用我的類DynamicArrayList
來實現類堆。在我的頭文件中,Heap包含我的DynamicArrayList
標題,並將DynamicArrayList
作爲私有成員。在實現我的堆我想用數組「數據」,這也是我的DynamicArrayList
的私有成員,但它給我的錯誤是:訪問私有成員的私有成員
DynamicArrayList ::數據無法訪問 類DynamicArrayList聲明私有成員
當我嘗試更改堆文件中的數組。例如,我會嘗試
lst.data[0] = lst.data[heapSize]
與lst
正在DynamicArrayList
定義爲堆文件中的私有成員,我會得到錯誤。我是否應該將成員從private
更改爲protected
,還有什麼可以訪問陣列?
除非您將它設置爲'public',否則在這種情況下您將無法使用它。 – skypjack
既然'DynamicArrayList'是一個成員,而不是基類,'data'是'private'還是'protected'並不重要。你可以給'DynamicArrayList'作爲'data'的訪問者(getter)(它允許任何人訪問它),或者讓'DynamicArrayList'聲明'Heap'爲朋友(它將這些類連接在一起,並且讓Heap有效地處理所有'DynamicArrayList'的成員都是'public',而沒有實際提供公共訪問權限)。在這種情況下,'friend'可能會更好,因爲[它不會破壞封裝](https://isocpp.org/wiki/faq/friends#friends-and-encap)。 –