2015-03-31 38 views
1

如果我有一個框,並且裏面有一千個項目,我將創建一個名爲Box的類。然後我在Box裏有一個方法來創建一千個項目。有權訪問容器值/變量的子項目(框和內容示例)

class Box 
{ 
public:  
    bool isOpen = true; 
    Item *p_boxContents //Create pointer to a thousand Item objects 

    void createBoxContents() 
    { 
     p_boxContents = new Item[1000]; 
    } 

現在我有一個Item類。請記住,我將創建其中的許多內容,並且我希望他們每個人都可以訪問Box成員變量isOpen。我怎樣才能做到這一點,而無需指針成員指向Box地址的每個「Item」實例?

起初我通過使用類繼承來解決這個問題,但我被告知這是錯誤的,並且我知道這種情況在構成領域而不是繼承領域更合適。

我只是從編程開始,我一直試圖弄清楚這幾天,任何人想給我明顯的答案?

+0

你應該考慮使用'的std :: VECTOR'的項目,而不是一個數組。這會讓生活變得更容易。 – Simon 2015-03-31 12:30:14

+0

爲什麼你經常在放置2個空格後?這不是那樣的 – 2015-10-04 05:39:31

回答

1

如果沒有代碼可以從外部訪問Item,那麼您可以在Box內使用內部類。

您可以閱讀有關Item s就如何訪問成員Boxhere

+0

在我的情況下,Box類也需要訪問Item類,它是一種相互依賴關係,我讀的很好,比如使用指針。我希望Box調用每個Item對象的'update()'方法,但是爲了保持這個例子,假設每個Item對象都有一個布爾變量'isHeavy',Box類需要訪問。無論如何,我要閱讀你的鏈接。我會很感激這方面的幫助。 – Zebrafish 2015-03-31 09:16:45

+0

我已經查看了您的鏈接和另一個示例,但看起來解決方案是在子類中存儲對父類的引用。那麼,如果你創建了一千個,他們每個人都將有一個對父類的引用。我問這個的原因是因爲父類被實例化了一次,並且假設你將實例化很多很多的子類,這將是一個指針,4個字節,數千和數千,但它們都指向到同樣的事情。他們都沒有辦法用1個引用或指針指向同一個父類? – Zebrafish 2015-03-31 09:59:53

+0

我仍然在尋找一種方式,似乎沒有一種方法。最簡單的方法似乎是每個Item對象都有一個指向父類的指針,並且可以通過循環將指向Box的指針傳遞給創建的每個「Item」。我的頭腦中一定有一些東西缺失,因爲我固執地堅持認爲你不需要指向同一事物的一萬個指針,你應該只需要指定一個地址(更新)方法。雖然,也許這就像有很多指針一樣,但我很困惑。 – Zebrafish 2015-03-31 11:28:18