gpt4 book ai didi

c++ - 由于私有(private)继承而无法访问的类型

转载 作者:IT老高 更新时间:2023-10-28 22:36:31 25 4
gpt4 key购买 nike

g++ 拒绝我访问一个类型,只是因为它恰好是一个私有(private)祖父。这有意义吗?

struct A {};

struct B : private A {};

struct C : B {
void foo(A const& a) {}
};

编译得到:

1:10: error: ‘struct A A::A’ is inaccessible
6:12: error: within this context

我的意思是:我从不想以祖先的身份访问 A。事实上,如果 AB 的私有(private)祖先,那么除了 B(即 C )?

当然,我可以使用 protected 继承,但在我的情况下它并没有什么意义。

最佳答案

这是由于从 A 注入(inject)的类名将全局 A 隐藏在 C 中。虽然 A 是可见的,但它是不可访问的(因为它是作为私有(private)导入的),因此会出现错误。您可以通过在全局命名空间中查找 A 来访问它:

void foo(::A const& a) {}

关于c++ - 由于私有(private)继承而无法访问的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com