问题标签 [private-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
692 浏览

c++ - 指向不可访问基中的成员函数的指针

下一个例子的编译:

失败并出现下一个错误:

我知道 A 不是 B 的可访问基础,但我正在使用using关键字。它不应该允许访问函数 foo 吗?

标准中的哪些相关段落阻止了上述内容的编译?

0 投票
2 回答
1153 浏览

c# - How to use Private Inheritance aka C++ in C# and Why not it is present in C#

I know that private inheritance is supported in C++ and only public inheritance is supported in C#. I also came across an article which says that private inheritance usually defines a HAS-A relationship and kind of an aggregation relationship between the classes.

EDIT: C++ code for private inheritance: The "Car has-a Engine" relationship can also be expressed using private inheritance:

Now, Is there a way to create a HAS-A relationship between C# classes which is one of the thing that I would like to know - HOW?

Another curious question is why doesn't C# support the private (and also protected) inheritance ? - Is not supporting multiple implementation inheritance a valid reason or any other?

Is private (and protected) inheritance planned for future versions of C#?

Will supporting the private (and protected) inheritance in C# make it a better and widely used language?

0 投票
2 回答
87 浏览

c++ - 在c ++中使用私有继承时是否可以隐藏重载方法

是否可以在具体类“Bar”中隐藏 fn(int)

0 投票
4 回答
675 浏览

c++ - 什么是私有继承,它解决了哪些问题?

有人可以解释一下 C++ 中的私有/受保护继承到底是为了什么,以及它打算解决什么问题?

我已经看过这个问题,但我仍然不明白它什么,更不用说什么时候应该使用它了。

(与 Java/C# 或类似语言中的功能进行比较也可能会有所帮助。)

0 投票
1 回答
2156 浏览

c++ - 私有继承与包含

在解释何时必须使用私有继承而不是包含时,本文的作者说:

“我们需要在另一个基础子对象之前构造使用的对象,或者在之后销毁它。如果对象生命周期稍长很重要,那么除了使用继承之外别无他法”

如果您希望子对象 A 在子对象 B 之前构造并在 B 之后销毁,那么在封闭类中在 B 之前声明 A 还不够吗?换句话说,为什么我们不能在这种情况下使用遏制来达到相同的结果?

0 投票
4 回答
170 浏览

c++ - 与组合相比,为什么私有继承会增加有人破坏我的代码的可能性?

这篇文章的作者指出

“通常你不想访问太多其他类的内部,而私有继承为你提供了一些额外的权力(和责任)。但私有继承并不邪恶;它只是维护成本更高,因为它增加了有人更改会破坏您的代码的东西的可能性。”

Car假设从 private 继承的以下代码Engine

我的问题是:如何Car通过设置例如Engine少于 4 个圆柱体、使用私有继承并且在基类中没有受保护成员来破坏此代码?

0 投票
3 回答
282 浏览

c++ - 涉及私有继承的 C++ 编译器错误

有人可以向我解释以下编译器错误:

指示行的错误是:

究竟什么是不可访问的,为什么?

0 投票
2 回答
122 浏览

c++ - 如何在私有继承中调用父成员?

我正在通过 GoF在线链接阅读一本关于设计模式的书。

在这本书的适配器模式中,在示例代码部分,我遇到了这个特定的代码:

此类TextViewTextShape以下方式私有继承:

然后在这个void TextShape::BoundingBox函数中如下:

可以看到,函数GetExtent&GetOrigin被称为 TextShape,而TextView包含这些函数的类是私有继承的。

我的理解是,在私有继承中,所有parent class成员都变得不可访问,那么这个 ( void TextShape::BoundingBox()) 函数是如何试图访问它的呢?

更新:

感谢大家的回答,我在阅读私有继承时陷入了错误的观念。我觉得,它甚至会阻止访问任何成员,而实际上它会更改访问说明符而不是可访问性。非常感谢你澄清:)

0 投票
2 回答
294 浏览

c++ - vc++10中的模板私有继承不可访问

以下代码使用 GCC 4.4.6 和 Comeau 4.3.10 进行编译。

它在 VC++10 中给出了以下错误:

什么是允许的好的交叉编译器解决方法o.name = 0;

注意:添加using A::nameB解决了这个问题,但是将A::name成员发布给每个人,而它应该只对特定的模板实例可见,即C<B>.

0 投票
1 回答
46 浏览

c++ - 需要使用私有继承的设计帮助

我对以下情况有疑问:一个库(CardReader)实现了 ISO7816 协议并与智能卡(由我实现)通信。

我必须实现一个使用这个库的专有协议。

在 CardReader 中有以下类 APDURequest 和 APDUResponse。CardReader 类实现了发送和接收这些消息的所有功能。

另一方面,在我的软件中,我有一个独立的层次结构来实现进出智能卡的消息。这是基类的接口:

现在我的疑问是如何派生专业课......我的第一次尝试是:

但我编译时错误:无法实例化抽象类 ADMessageResATR:statusWord、sw1 和 sw2 抽象