我想从嵌套类继承,该嵌套类在外部类的私有(private)部分中。是否可以?

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),它可以正常工作。

09-28 04:37