2013-11-26 75 views
0

我試圖通過C++繼承,我的代碼有問題。我有從它派生的基類Caine和CaineCuPete。我在聲明派生類構造函數時遇到錯誤。基類變量'未在其範圍內聲明'

CaineCuPete(int nPete) : Caine(cNume,cHeight,cWeight,cAge,cColor); 

錯誤:

cNume was not declared in its scope. cHeight was not declared in its scope. ...

+0

你需要在你的派生類的構造函數把這些作爲輸入參數。 –

+0

請提供一個[SSCCE](http://sscce.org),因爲人們只能猜測'cNume'等等。 –

回答

2

您需要將這些作爲輸入參數在您的派生類構造函數中。

CaineCuPete(int nPete, string cNume, double cHeight, 
    double cWeight, double cAge, int cColor) : Caine(cNume,cHeight,cWeight,cAge,cColor), 
Pete (nPete) 
{ 
} 

此鏈接解釋: http://www.learncpp.com/cpp-tutorial/114-constructors-and-initialization-of-derived-classes/

+0

這也會打印一個錯誤,表示它期待在輸入結尾處輸入'{'。構造函數是在.cpp文件中聲明的,它是否必須內聯實現? – johnjhye

+0

是的,我想是的,因爲你直接將參數傳遞給基類構造函數。 –

+0

我現在很困惑。你有鏈接進一步閱讀這個? – johnjhye

1

第一次使用前,應定義的變量cNume,cHeight,cWeight,cAge,cColor。一個常見的問題是它們是在使用點之後定義的,而不是之前定義的。

+0

但這些不是常量,它們將從用戶輸入中讀取。 – johnjhye

+0

它們仍然需要在某處定義。請注意,在調用其基礎構造函數時,不能使用「CaineCuPete」的成員變量。 – p12

+0

@johnjhye然後,您需要將它們作爲參數傳遞給'CaineCuPete' - 構造函數,就像Abhishek Bansal所說的 – Hulk