友谊和私有嵌套类继承
Friendship and private nested class inheritance
>我想从嵌套类继承,该嵌套类位于外部类的私有部分。可能吗?
class A {
friend class B;
friend class C;
private:
class NiceNestedClass {
};
};
class C {
void a() {
A::NiceNestedClass works;
}
};
class B : A::NiceNestedClass{
};
NiceNestedClass 的实例化不是问题。但是 g++ 不允许我从中继承。有什么解决方法吗?
g++ -std=c++11 a.c -o a
a.c:5:11: error: ‘class A::NiceNestedClass’ is private
class NiceNestedClass {
^
a.c:15:14: error: within this context
class B : A::NiceNestedClass{
g++ 4.8.4, std=c++11
这是一个已知的 gcc 错误,早在 2013 年就被报告
了https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59482
您的代码是正确的,应该使用较新版本的 gcc 进行编译(在 gcc4.9 及更高版本上修复)。在我这边(gcc5.3),它工作得很好。
这可能是
一个错误。 使用 gcc.godbolt.org 并运行
#include <iostream>
class A {
friend class B;
friend class C;
private:
class NiceNestedClass {
};
};
class C {
void a() {
A::NiceNestedClass works;
}
};
class B : A::NiceNestedClass{
};
int main(){
}
适用于每个版本的 clang、ICC 和 gcc 4.9.2 或更高版本。 它失败与任何 4.8.x 或更低版本的 gcc。
相关文章:
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- 嵌套类、继承和C++中的共享指针
- 如何重写继承的嵌套类中存在的虚拟方法
- 返回自身内部的双重嵌套类的成员函数,该类继承自从自身继承的类
- 嵌套结构属性继承
- C++嵌套类从嵌套类继承,请键入 issue
- 如何解释嵌套继承类结构?
- 继承和嵌套名称的陷阱
- 嵌套类继承的错误
- 嵌套类和继承
- 为什么 Visual C++无法编译从私有嵌套类继承的友元模板
- 继承类中嵌套类的可见性
- 为什么 GCC 允许从私有嵌套类继承
- 为什么 GCC 不允许在你是朋友时从私有嵌套类继承
- 在 C++11 中,从私有嵌套类型继承是否合法?
- C++ 嵌套前向声明继承
- 不直观的嵌套类继承
- 我应该在 c++ 中的派生类中继承嵌套类吗?
- 继承嵌套模板类的实现
- 继承嵌套类时出现C4091错误