conversion to inaccessible base class is not allowed [duplicate]

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

1 Answer

class D1 :B1 

Inheritance of classes is private by default, you should make it public:

class D1 : public B1 
0

You Might Also Like