【发布时间】:2018-04-14 05:24:34
【问题描述】:
我首先定义了一个类 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 {...};如果是,则错误消息是正确且预期的 - 私有继承的全部意义在于使基类无法访问。
标签: c++ base-class