不允许转换为不可访问的基类

Che*_* Lu 3 c++ base-class

我首先定义了一个B1类和一个派生类D1.然后我想定义对B1的引用并将其初始化为我刚刚定义的D1对象.这里出现错误,说"不允许转换为无法访问的基类'B1'",我不知道为什么.

#include "std_lib_facilities.h"

class B1 {
public:
    virtual void vf() { cout << "B1::vf()\n"; };
    void f() { cout << "B1::f()\n"; };
};

class D1 :B1 {
public:
    void vf() { cout << "D1:vf()\n"; };
    void f() { cout << "D1::f()\n"; };
};




int main()
{
    B1 b1;
    b1.vf();
    b1.f();

    D1 d1;
    d1.vf();
    d1.f();

    B1& db=d1;//error

    keep_window_open();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ken 10

class D1 :B1
Run Code Online (Sandbox Code Playgroud)

private默认情况下,类的继承应该是public:

class D1 : public B1
Run Code Online (Sandbox Code Playgroud)