加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:31:46 所属栏目:百科 来源:网络整理
导读:我在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)
我在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)
    {
    }
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读