私有继承的直接基类阻止派生类定义间接基类的对象

纳特

像这样的代码

class Try
{
public:
    Try() = default;
    int i = 0;
};

class B1 : private Try
{
public:
    B1() = default;
    using Try::Try();
    using Try::i;
};

class C1 : public B1
{
public:
    Try a; //tell me:'Try' is a private member of 'Try'
    
    void print()
    {std::cout << i << std::endl;}
    //Access to this I is allowed;
};

Try a是一个本地对象,不是C1的一部分,为什么会出错?

只要它是私有继承的直接基类,就不可能在其派生类中定义间接基类对象吗?是因为不能使用构造函数,还是由于其他原因?

乔多克

Try a是一个本地对象,不是C1的一部分,为什么会出错?

通过Try a;在类的上下文中编写C1,名称查找通常将始终从本地范围扫描到全局范围。因此B1::Try,由于私有继承,第一个匹配项将无法访问C1

修复很容易,只需提示编译器您“真正”的意思,即通过编写eg即可::Try a;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从基类公开继承,从派生类私有继承

来自分类Dev

在C ++中,公共继承基类调用派生类的私有虚拟功能

来自分类Dev

派生类不能访问私有成员(尽管构造函数是在基类中定义的)

来自分类Dev

派生类定义的基类集合

来自分类Dev

从派生类创建基类对象

来自分类Dev

从派生类访问基类对象

来自分类Dev

对派生类对象的基类引用

来自分类Dev

继承的麻烦:派生类不继承基类

来自分类Dev

继承的麻烦:派生类不继承基类

来自分类Dev

从基类继承的C ++公共方法无法访问派生类中的私有成员变量

来自分类Dev

基类和派生类不能都有同名的私有嵌套类吗?

来自分类Dev

派生类不继承基类的重载方法

来自分类Dev

继承:使用基类或派生类进行处理

来自分类Dev

Java继承基类使用派生类方法

来自分类Dev

派生类到底从其基类继承了什么?

来自分类Dev

Python继承:从基类转换为派生类

来自分类Dev

OOP 继承:从派生类修改基类中的数组

来自分类Dev

C ++继承:指向基类的派生类指针调用派生类方法

来自分类Dev

如何从基类的实例创建派生类的实例并包含私有字段?

来自分类Dev

派生类如何调用基类的私有方法?

来自分类Dev

如何在派生类中重写`toString`并使用基类中的私有实例变量?

来自分类Dev

派生类的实例化是否为基类的私有成员分配内存?

来自分类Dev

重写派生类C ++中基类私有成员的行为

来自分类Dev

为什么我能够从派生类修改基类的私有数据

来自分类Dev

基类对象作为派生类的参数

来自分类Dev

包含基类/派生类对象的C ++数组

来自分类Dev

通过派生类对象调用基类函数

来自分类Dev

使用派生类创建基类对象

来自分类Dev

引用派生类时基类的对象大小

Related 相关文章

  1. 1

    从基类公开继承,从派生类私有继承

  2. 2

    在C ++中,公共继承基类调用派生类的私有虚拟功能

  3. 3

    派生类不能访问私有成员(尽管构造函数是在基类中定义的)

  4. 4

    派生类定义的基类集合

  5. 5

    从派生类创建基类对象

  6. 6

    从派生类访问基类对象

  7. 7

    对派生类对象的基类引用

  8. 8

    继承的麻烦:派生类不继承基类

  9. 9

    继承的麻烦:派生类不继承基类

  10. 10

    从基类继承的C ++公共方法无法访问派生类中的私有成员变量

  11. 11

    基类和派生类不能都有同名的私有嵌套类吗?

  12. 12

    派生类不继承基类的重载方法

  13. 13

    继承:使用基类或派生类进行处理

  14. 14

    Java继承基类使用派生类方法

  15. 15

    派生类到底从其基类继承了什么?

  16. 16

    Python继承:从基类转换为派生类

  17. 17

    OOP 继承:从派生类修改基类中的数组

  18. 18

    C ++继承:指向基类的派生类指针调用派生类方法

  19. 19

    如何从基类的实例创建派生类的实例并包含私有字段?

  20. 20

    派生类如何调用基类的私有方法?

  21. 21

    如何在派生类中重写`toString`并使用基类中的私有实例变量?

  22. 22

    派生类的实例化是否为基类的私有成员分配内存?

  23. 23

    重写派生类C ++中基类私有成员的行为

  24. 24

    为什么我能够从派生类修改基类的私有数据

  25. 25

    基类对象作为派生类的参数

  26. 26

    包含基类/派生类对象的C ++数组

  27. 27

    通过派生类对象调用基类函数

  28. 28

    使用派生类创建基类对象

  29. 29

    引用派生类时基类的对象大小

热门标签

归档