2013-06-13 71 views
-2

在下面的代碼中,變量'id'在類Horse中是不可訪問的,這是繼承問題嗎?訪問修飾符問題?任何幫助是極大的讚賞。變量不可訪問?

class Animal 
{ 
private: 
    int id; 
}; 

class Horse : public Animal 
{ 
public: 
    Horse(){ 
     if((id % 2) == 1) { id++ }; 
    } 
}; 
+4

你知道'id'是'private',對吧?你知道什麼是「私人」的測量,對嗎? –

回答

3

Horse只有當你使用繼承在這種情況下,公共和保護的元素:

class Horse : public Animal 

繼承id,您可以在Animal類中定義這個私有元素作爲保護:

class Animal 
{ 
protected: 
    int id; 
}; 
+0

乾杯隊友,感謝。 – Emmett

+0

@Emmett請接受答案。 –

0

你可能想idprotected,而不是private,然後。或者更好的是,使用您寫入的訪問器...

0

id對於Animal是私有的,因此無法訪問到Horse。令人滿意的設計是通過getID()訪問id,儘管您需要一個setter以及現有的getter方法。

0

聲明一個變量爲私有會給出一個結果,只有變量被聲明的類才能訪問它,如果你希望繼承基本類的類能夠訪問變量,使用protecte d。