不允许转换为无法访问的基类[重复]
Posted
技术标签:
【中文标题】不允许转换为无法访问的基类[重复]【英文标题】:conversion to inaccessible base class is not allowed [duplicate] 【发布时间】: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 ...;
如果是,则错误消息是正确且预期的 - 私有继承的全部意义在于使基类无法访问。
【参考方案1】:
class D1 :B1
类的继承默认是private
,你应该设为public
:
class D1 : public B1
【讨论】:
以上是关于不允许转换为无法访问的基类[重复]的主要内容,如果未能解决你的问题,请参考以下文章
C++ VS代码爆红:不允许对不可访问的基类进行转换(子类继承父类时必须加上继承属性,比如public)
C++ VS代码爆红:不允许对不可访问的基类进行转换(子类继承父类时必须加上继承属性,比如public)