Сначала я определяю класс 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;
}
B1частной базой? Если нет, сделайте егоclass D1 : public B1 {...};Если да, то сообщение об ошибке правильное и ожидаемое — весь смысл частного наследования в том, чтобы сделать базовый класс недоступным. - person Igor Tandetnik   schedule 01.11.2017