2013-11-26 39 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