从派生类构造函数初始化受保护的数据成员
Initialise protected data members from derived class constructor
我正在重新学习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)
{}
};
我得到一个编译错误对上述派生类承包商说:成员初始化器_topLeft没有命名非静态数据成员或基类(其他成员也有类似的错误)
我不知道出了什么问题。是不是我不能初始化受保护的成员使用初始化列表之类的?
是我不能使用初始化列表或其他东西初始化受保护的成员?
。只有类自己的成员可以在构造函数初始化列表中初始化(当然,你可以在构造函数体中给它们赋值)。首先初始化基子对象。
你需要以某种方式将工作委托给基类的一个构造函数:
class Base {
explicit Base(int i) : m(i)
{}
protected:
int m;
};
class Derived : public Base {
explicit Derived(int i) : Base(i)
{ }
};
不能在派生类的初始化列表中初始化基类成员。您可以添加一个构造函数Quad
为你这么做,或者你可以设定他们自己的身体派生类的构造函数。
这是错误C2614的重复:':非法成员初始化:'不是基或成员
只能在初始化器列表中初始化成员或基类。
相关文章:
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- 从模板化父类中的派生内部类访问受保护的成员变量
- 将派生类构造函数参数传递给受保护的成员
- 无法访问派生类函数内的基类的受保护数据成员
- C :可以从类及其受保护的成员类型继承可以继承吗?
- C++对已继承的受保护类成员的未定义引用
- 无法通过指针或对象 c++ 访问受保护的成员
- C 受保护的成员访问
- 来自模板参数的派生类没有受保护的成员访问权限
- 访问受保护的成员
- 尝试访问基类的受保护数据成员时出现编译错误
- 为什么我得到带有受保护静态成员的 C2248(无法访问的成员)
- 虚拟继承和受保护的成员访问
- 在子类函数中访问超类友元的受保护数据成员
- 无法访问 C++ 中类模板继承的第二级上的受保护类成员
- 从公共派生类访问受保护的成员
- 对受保护静态成员的未定义引用.我该如何解决
- 受保护数据成员的替代方案,具体案例研究
- 访问另一个类的受保护数据成员