错误 C2614:'ChildClass':非法成员初始化:'var1'不是基或成员
error C2614: 'ChildClass' : illegal member initialization: 'var1' is not a base or member
我在C++中收到以下错误:
错误 C2614:"子类":非法成员初始化:"var1"是 不是基地或成员
Class Base
{
protected:
int var1;
public:
Base()
{
var1=0;
}
}
class Child : public Base
{
int chld;
public:
Child() : var1(0)
{
chld=1;
}
}
我觉得我所做的是按照OO协议。这里var1
是基类的数据成员,受保护作为访问说明符。所以它可以被继承,它会在孩子身上变得私密。
不明白为什么我会收到错误?
由于错误消息提供的确切原因,它不起作用:只能将初始值设定项列表与直接成员或基类一起使用。
在您的情况下,您甚至不需要初始化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)
{
}
};
不能初始化基类的成员,只能初始化当前类的成员。 在基类中使用参数化构造函数。
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;
}
};
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 用于访问容器<T>数据成员的正确 API
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 嵌套在类中时无法设置成员数据
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将函数类成员映射到类本身内部
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- 多成员Constexpr结构初始化
- 错误 C2614:'ChildClass':非法成员初始化:'var1'不是基或成员