问题
I define a class B1 and a derived class D1 at first. Then I want to define a reference to B1 and initialize that to the D1 object I just defined. Here comes the error, saying that "conversion to inaccessible base class 'B1' is not allowed", which I don't know why.
#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;
}
回答1:
class D1 :B1
Inheritance of classes is private
by default, you should make it public
:
class D1 : public B1
来源:https://stackoverflow.com/questions/47062562/conversion-to-inaccessible-base-class-is-not-allowed