gpt4 book ai didi

c++ - 从派生类构造函数初始化 protected 数据成员

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:16 26 4
gpt4 key购买 nike

我正在重新学习 C++,并尝试在这里编写一个程序。

class Quad{
public:
Quad(){}
protected:
vec _topLeft, _topRight, _bottomLeft, _bottomRight;
};

class IrregularQuad : public Quad{
public:
IrregularQuad(vec topLeft, vec topRight, vec bottomLeft, vec bottomRight)
: _topLeft(topLeft), _topRight(topRight), _bottomLeft(bottomLeft), _bottomRight(bottomRight)
{}
};

我在上面的 Dervied class contractor 上遇到一个编译错误:成员初始值设定项 _topLeft 未命名非静态数据成员或基类(其他成员也有类似错误)

我无法理解发生了什么。是不是我无法使用 Initalizer 列表或其他方式初始化 protected 成员?

最佳答案

Is it that I can't initialise protected members using Initalizer list or something?

没错。只有类自己的成员可以在构造函数初始化列表中初始化(你可以,OTOH,在构造函数的主体中分配给它们)。基础子对象首先被初始化。

您需要以某种方式将工作委托(delegate)给基类的构造函数之一:

class Base {

explicit Base(int i) : m(i)
{}
protected:
int m;
};

class Derived : public Base {
explicit Derived(int i) : Base(i)
{ }
};

关于c++ - 从派生类构造函数初始化 protected 数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com