问题标签 [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.
c++ - 指向不可访问基中的成员函数的指针
下一个例子的编译:
失败并出现下一个错误:
我知道 A 不是 B 的可访问基础,但我正在使用using
关键字。它不应该允许访问函数 foo 吗?
标准中的哪些相关段落阻止了上述内容的编译?
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?
c++ - 在c ++中使用私有继承时是否可以隐藏重载方法
是否可以在具体类“Bar”中隐藏 fn(int)
c++ - 什么是私有继承,它解决了哪些问题?
有人可以解释一下 C++ 中的私有/受保护继承到底是为了什么,以及它打算解决什么问题?
我已经看过这个问题,但我仍然不明白它是什么,更不用说什么时候应该使用它了。
(与 Java/C# 或类似语言中的功能进行比较也可能会有所帮助。)
c++ - 私有继承与包含
在解释何时必须使用私有继承而不是包含时,本文的作者说:
“我们需要在另一个基础子对象之前构造使用的对象,或者在之后销毁它。如果对象生命周期稍长很重要,那么除了使用继承之外别无他法”
如果您希望子对象 A 在子对象 B 之前构造并在 B 之后销毁,那么在封闭类中在 B 之前声明 A 还不够吗?换句话说,为什么我们不能在这种情况下使用遏制来达到相同的结果?
c++ - 与组合相比,为什么私有继承会增加有人破坏我的代码的可能性?
这篇文章的作者指出
“通常你不想访问太多其他类的内部,而私有继承为你提供了一些额外的权力(和责任)。但私有继承并不邪恶;它只是维护成本更高,因为它增加了有人更改会破坏您的代码的东西的可能性。”
Car
假设从 private 继承的以下代码Engine
:
我的问题是:如何Car
通过设置例如Engine
少于 4 个圆柱体、使用私有继承并且在基类中没有受保护成员来破坏此代码?
c++ - 涉及私有继承的 C++ 编译器错误
有人可以向我解释以下编译器错误:
指示行的错误是:
究竟什么是不可访问的,为什么?
c++ - 如何在私有继承中调用父成员?
我正在通过 GoF在线链接阅读一本关于设计模式的书。
在这本书的适配器模式中,在示例代码部分,我遇到了这个特定的代码:
此类TextView
由TextShape
以下方式私有继承:
然后在这个void TextShape::BoundingBox
函数中如下:
可以看到,函数GetExtent
&GetOrigin
被称为 TextShape,而TextView
包含这些函数的类是私有继承的。
我的理解是,在私有继承中,所有parent class
成员都变得不可访问,那么这个 ( void TextShape::BoundingBox()
) 函数是如何试图访问它的呢?
更新:
感谢大家的回答,我在阅读私有继承时陷入了错误的观念。我觉得,它甚至会阻止访问任何成员,而实际上它会更改访问说明符而不是可访问性。非常感谢你澄清:)
c++ - vc++10中的模板私有继承不可访问
以下代码使用 GCC 4.4.6 和 Comeau 4.3.10 进行编译。
它在 VC++10 中给出了以下错误:
什么是允许的好的交叉编译器解决方法o.name = 0;
?
注意:添加using A::name
到B
解决了这个问题,但是将A::name
成员发布给每个人,而它应该只对特定的模板实例可见,即C<B>
.
c++ - 需要使用私有继承的设计帮助
我对以下情况有疑问:一个库(CardReader)实现了 ISO7816 协议并与智能卡(由我实现)通信。
我必须实现一个使用这个库的专有协议。
在 CardReader 中有以下类 APDURequest 和 APDUResponse。CardReader 类实现了发送和接收这些消息的所有功能。
另一方面,在我的软件中,我有一个独立的层次结构来实现进出智能卡的消息。这是基类的接口:
现在我的疑问是如何派生专业课......我的第一次尝试是:
但我编译时错误:无法实例化抽象类 ADMessageResATR:statusWord、sw1 和 sw2 抽象