2013-10-22 58 views
0

好吧,所以這看起來很簡單,但它不起作用時會爆炸我的大腦。 這裏有一個非常簡單的幾個類。 (在VC++ BTW)C++從基類修改屬性

class Food 
{ 
protected: 
    char maxAmountCarried; 
}; 
class Fruit:Food 
{ 
protected: 
    Fruit() 
    { 
     maxAmountCarried = 8; // Works fine 
    } 
}; 
class Watermelon:Fruit 
{ 
protected: 
    Watermelon() 
    { 
      maxAmountCarried = 1; //Food::maxAmountCarried" (declared at line 208) is inaccessible 
    } 
}; 

所以基本上,我想水果,默認情況下,有一個最大承載8 西瓜的能力都大得多,因此容量變爲1 然而,不幸的是我能無法訪問該房產。

如果有人能告訴我一種解決此問題的方法,這將有很大的幫助。

感謝提前:)

+2

'interface'不是一個有效的C++關鍵字。 – LihO

+1

也不會放棄分號。 –

+0

Woops,對不起!沒有實際複製和粘貼代碼(這只是一個比喻明顯),所以我犯了一些錯誤= S –

回答

3

在C++中,使用class,當作爲類鍵定義類,繼承是默認私人。如果你想公有繼承,你不得不說:

class Fruit : public Food { /* ... */ }; 

class Watermelon : public Fruit { /* ... */ }; 

否則,Food::maxAmountCarried成爲私人Fruit,而不是從Watermelon中訪問。

+0

Ooooh好吧。謝謝一堆! :) –