protected inheritance - 基 class 构造函数是受保护的还是继承的 class 构造函数是受保护的?

protected inheritance - Does the base class constructor protected or the inherited class constructor protected?

假设我有 2 个 类

class Employee {//constructor definition};
class Manager : protected Employee{ //constructor definition};
Manager::Manager (string newName, double newPayRate, double newHours, bool newSalariedEmployee): Employee (newName, newPayRate, newHours)
{
    mSalaried = newSalariedEmployee;
}
Employee::Employee (string newName, double newPayRate, double newHours)
{
    mName = newName;
    mPayRate = newPayRate;
    mHours = newHours;
}
int main () 
{
    Employee *pMan = new Manager("bob", 0.5, 98, false); //squishy line
    return 0;
};


我知道如果我将 protected 更改为 public,那么 Employee *pMan = new Manager("bob", 0.5, 98, false); 会起作用,但我还有其他问题
1. 是不是调用new Manager (...)时出错?因为 new 不是 Manager() 的成员函数,这意味着无法完成该过程,因为 new 无法访问 Manager(...)//default constructor

2. 或者无法完成该过程,因为当它进入 Manager::Manager (string newName, double newPayRate, double newHours, bool newSalariedEmployee): Employee (newName, newPayRate, newHours) 时,由于 public 函数受到保护而无法调用 Employee(...)
请帮我解决一下,谢谢!

这不是构造函数继承的问题,而是与这样一个事实有关 - 作为继承保护 - 在 Manager 之外注意实际上 知道 Employee 子对象。

因此,将 Manager*new returns)转换为 Employee* 是不可能的,因为这两种类型 public 完全不相关。

将 protected 更改为 public 可以使继承从外部可见(因此可以访问 ManagerEmployee 部分)