c – 错误C2614:’ChildClass’:非法成员初始化:’var1’不是基础或成员

前端之家收集整理的这篇文章主要介绍了c – 错误C2614:’ChildClass’:非法成员初始化:’var1’不是基础或成员前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在C中收到以下错误

error C2614: ‘ChildClass’ : illegal member initialization: ‘var1’ is
not a base or member

Class Base 
{
    protected:
    int var1;
public:
    Base()
    {
        var1=0;
    }
}


class Child : public Base
{
    int chld;
    public: 
    Child() : var1(0)
    {
        chld=1;
    }
}

我觉得我所做的是按照OO协议.
这里var1是具有受保护作为访问说明符的Base类的数据成员.所以它可以被继承,它将成为私人的孩子.

不明白为什么我收到错误
有人可以帮我吗

谢谢.

解决方法

错误消息为您提供的确切原因不起作用:您只能使用具有直接成员或基类的初始化程序列表.

在你的情况下,你甚至不需要初始化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)
    {
    }
};

猜你在找的C&C++相关文章