C中的私有基类可访问性

C中的私有基类可访问性,第1张

概述我最近不得不这样做: class A { };class B : private A { };class C : public B { public: A *myA;};int main() { return 0;} 我在尝试的三个编译器中出错了.当我将myA的声明更改为:: A * myA时,一切正常.我在C标准中捅了一下,发现了第11.2节第3段,它 我最近不得不这样做:
class A { };class B : private A { };class C : public B {    public:        A *myA;};int main() {    return 0;}

我在尝试的三个编译器中出错了.当我将myA的声明更改为:: A * myA时,一切正常.我在C标准中捅了一下,发现了第11.2节第3段,它说:

Note: A member of a private base class might be inaccessible as an inherited member name,but accessible directly.

哪个是相关的,但不清楚.为什么名称A无法访问?如果没有隐藏A会出现什么问题?

谢谢,
-ben

解决方法 哪里可能“出错”:
namespace nmsp{    class A {};}class A {};class B : private nmsp::A{    // well-formed:    A* d; // refers to the injected-class-name nmsp::A!!};class C : public B{    // ill-formed    A* p; // refers to the injected-class-name nmsp::A!!};

它不应该依赖于base-clause中的access-specifIEr,而是使用:: A或nmsp :: A,否则它将是容易出错的IMO.

总结

以上是内存溢出为你收集整理的C中的私有基类可访问性全部内容,希望文章能够帮你解决C中的私有基类可访问性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1244353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存