Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 友谊与私有嵌套类继承_C++_Inheritance_Inner Classes_Friend - Fatal编程技术网

C++ 友谊与私有嵌套类继承

C++ 友谊与私有嵌套类继承,c++,inheritance,inner-classes,friend,C++,Inheritance,Inner Classes,Friend,我想从嵌套类继承,该类位于外部类的私有部分。可能吗 class A { friend class B; friend class C; private: class NiceNestedClass { }; }; class C { void a() { A::NiceNestedClass works; } }; class B : A::NiceNestedClass{ }; NiceNestedClass的实例化不是问题。但是g++不允许我

我想从嵌套类继承,该类位于外部类的私有部分。可能吗

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

这是2013年报告的已知gcc错误


您的代码是正确的,应该使用较新版本的gcc(在gcc4.9和更高版本上修复)编译。就我而言(gcc5.3),它工作得很好。

这可能是一个bug。使用和运行

#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(){

}
#包括
甲级{
B级朋友;
C类朋友;
私人:
类嵌套类{
};
};
C类{
作废{
A::NiceNestedClass工作;
}
};
B类:A::NiceNestedClass{
};
int main(){
}
适用于clang、ICC和gcc 4.9.2或更高版本。如果gcc为4.8.x或更低,则会失败。

它可以工作:。你能把你收到的错误发出去吗?这可能是无关的。