cod*_*ver 14 c++ inheritance parent-child
我在C++中收到以下错误:
错误C2614:'ChildClass':非法成员初始化:'var1'不是基础或成员
Class Base
{
protected:
int var1;
public:
Base()
{
var1=0;
}
}
class Child : public Base
{
int chld;
public:
Child() : var1(0)
{
chld=1;
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得我所做的是根据OO协议.这var1是Base类的数据成员,其中protected作为访问说明符.所以它可以被遗传,它会变成私人的.
不明白我为什么会收到错误?
Luc*_*ore 24
它不能用于错误消息为您提供的确切原因:您只能将初始化程序列表与直接成员或基类一起使用.
在你的情况下,你甚至不需要初始化var1,因为Base::Base()将被Child设置var1为调用的构造函数调用0.
如果你想要一个不同的值,你必须重载Base构造函数并显式调用它:
class Base
{
protected:
int var1;
public:
Base() : var1(0)
{
}
Base(int x) : var1(x)
{
}
};
class Child:public Base
{
int chld;
public:
Child(): Base(42) , chld(1)
{
}
};
Run Code Online (Sandbox Code Playgroud)
您不能初始化基类的成员,只能初始化当前类的成员.在基类中使用参数化构造函数.
Class Base
{
protected:
int var1;
Base( int var ) : var1(var)
{}
public:
Base()
{
var1=0;
}
};
class Child:public Base
{
int chld;
public:
Child():Base(0)
{
chld=1;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14724 次 |
| 最近记录: |