【问题标题】: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 {...}; 如果是,则错误消息是正确且预期的 - 私有继承的全部意义在于使基类无法访问。

标签: c++ base-class


【解决方案1】:
class D1 :B1

类的继承默认是private,你应该设为public

class D1 : public B1

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多