相关疑难解决方法(0)

使用初始化列表(C++)初始化父的受保护成员

是否可以使用子类的构造函数的初始化列表来初始化在父类中声明为protected的数据成员?我无法让它发挥作用.我可以解决它,但如果我不必这样做会很好.

一些示例代码:

class Parent
{
protected:
    std::string something;
};

class Child : public Parent
{
private:
    Child() : something("Hello, World!")
    {
    }
};
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,编译器告诉我:"类'Child'没有任何名为'something'的字段".这样的事情可能吗?如果是这样,语法是什么?

非常感谢!

c++ inheritance constructor initialization-list

128
推荐指数
3
解决办法
4万
查看次数

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

我在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作为访问说明符.所以它可以被遗传,它会变成私人的.

不明白我为什么会收到错误?

c++ inheritance parent-child

14
推荐指数
2
解决办法
1万
查看次数