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或更低,则会失败。它可以工作:。你能把你收到的错误发出去吗?这可能是无关的。